我有一个C格式的CSV文本文件。所以每行文本都是这样的记录:
bob numbers,10,11,12,13
john no,7,13,10
我可以在C中使用哪些函数来获得一个输出,该输出可以使每行平均舍入为2 d.p.看起来像这样?
bob numbers 11.5
john no 6.67
答案 0 :(得分:0)
您可以使用strtok
和,
作为分隔符来读取名称和数字,然后使用atoi
将数字字符串转换为实际数字。此外,fgets
允许您逐行读取文件。计算平均值非常简单。考虑使用atof
代替atoi
将数字读取为双精度数,而不是整数。
答案 1 :(得分:0)
你的问题可以解决,如下所示:
#include <stdio.h>
#include <string.h>
int main()
{
int a[20];
FILE *fp = fopen("input.txt","r");
char buff[255],*p;
int i,j,k;
float sum;
while(fgets(buff,255,fp) != NULL)
{
i = 0;
k = 0;
sum = 0;
p = strtok(buff," ");
while(p!=NULL)
{
if(i>1)
a[k++] = atoi(p);
p = strtok(NULL,",");
i++;
}
for(j=0;j<k;j++)
sum += a[j];
printf("%5.2f\n",(float) (sum/k));
}
return 0;
}