c-将csv文件中的float值写入新文件并遍历字段

问题描述 投票:0回答:1

因此,基本上,我有一个单独的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);
    }
}
c csv floating-point field fread
1个回答
1
投票

char *无法通过fprintf转换为float。如果三个是代表浮点数的字符串,则需要使用sscanf对其进行转换。

ie

float weight = 0;
sscanf(three,"%f", &weight);
....
fprintf(ft, "%f", weight);

旁注答案:

也许在处理过程中保持连续运行?或将所有权重存储在浮点数组中,然后再求和。

© www.soinside.com 2019 - 2024. All rights reserved.