我有一个结构:
typedef struct _test{
int a;
int b;
int c;
float f_arr[16384];
}test_t;
该结构我需要以 csv 格式写入文件。我想我可能会使用 snprintf 函数将所有内容放入一个字符缓冲区,但是:我需要从 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] = ',';
}
所以,如果我现在将我的浮点数组转换为 arr 中的一个大字符串,我可以制作一个:
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。