C中的字符串操作,用于查找字符串中数字的平均值

时间:2014-11-15 07:42:57

标签: c string text-files

我有一个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

2 个答案:

答案 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; 
}