私は構造体を持っています:
typedef struct _test{
int a;
int b;
int c;
float f_arr[16384];
}test_t;
その構造体をcsv形式でファイルに書き込む必要があります。snprintf 関数を使用してすべてを 1 つの char バッファーに入れることができると考えましたが、f_arr から各値を変換する必要があります。
char f_t_str[30];
char arr[16384*2][30];
for (i=0; i< 16384; i++){
sprintf(f_t_str, "%.8f" ,test_t->f_arr[i]);
memcpy(arr[i*2], f_t_str, strlen(f_t_str));
printf("%s\n",arr[i*2]);
arr[i*2 + 1][0] = ',';
}
したがって、float 配列を arr で 1 つの大きな文字列に変換した場合は、次のように作成できます。
char dest[16384*2 + 512];
snprintf(dest, 16384*2 + 512, "%d,%d,%d,%s", test_t->a, test_t->b, test_t->s, arr);
しかし、結果として私は持っています:
10,11,12,13.1
それ以外の:
10,11,12,13.1,13.2,14.4.... [16384] ... 16400.23
float から char への変換中に文字列の末尾にsprintf
追加されるため、次(ループが終了した後のもの) はそれが満たされた後に終了すると思います-「arr」からの最初の値。それを機能させる方法は?'\0'
snprintf
'\0'
よろしく、J.