因此,基本上,我有一个单独的csv文件,其中包含不同的列,重点放在冰淇淋浇头和特定大小/尺寸上。在我的名为convert.c的程序中,我试图编写一个程序,该程序从csv文件中读取数据,并将数据写入经过更改的名为toppings.bin的新文件中。 csv文件中的一列包含不同冰淇淋样本(如12.3)的权重。我想做的是进行此测量并将此数据作为浮点数写入toppings.bin文件。当我尝试更改代码中的数据类型并运行它时,toppings.bin文件中的权重全部变为0.00000,而不是csv文件中的指定值。任何有关如何解决此问题的帮助将不胜感激。
权重列表示为字段3。
convert.c:
while(fgets(buf, lineCount, fd){
char *one = getfield(buf, 1);
char *two = getfield(buf, 2);
float *three = getfield(buf, 3);
if(one && two && three && strcmp(first, "Ice cream") == 0){
fprintf(ft, "%s %f\n", two, three);
}
}
char *
无法通过fprintf转换为float
。如果三个是代表浮点数的字符串,则需要使用sscanf
对其进行转换。
ie
float weight = 0;
sscanf(three,"%f", &weight);
....
fprintf(ft, "%f", weight);
旁注答案:
也许在处理过程中保持连续运行?或将所有权重存储在浮点数组中,然后再求和。