从文件读取到c中的数组

时间:2010-05-29 11:22:09

标签: c

我的文件包含一系列数字(整数,浮点数,整数,浮点数....),每个数字都写在一个单独的行上。列数不同,从一行到另一行,即

1 2.45 3 1.75

5 3.45 7 2.55 9 3.25

6 1.75 4 3.55 6 2.55 9 2.45

程序应读取整个文件的内容,并将数据放入float类型的数组中,每行包含一个条目。 这是我的基本解决方案,但这只适用于我没有固定列的情况。

float Read(FILE *pFile)
{
 char line[50]; char letter[5];
 fi = fopen("file.txt", "r");

 while (fgets(line,200,fi)!=NULL)
 {

    sscanf(line,"%f %f %f",&a[i], &a2[i],&a3[i]);
     printf("%2.0f %2.5f %2.0f\n",a[i],a2[i],a3[i]);
}

fclose(fi);
return a[i];
}

请帮助。

2 个答案:

答案 0 :(得分:1)

使用类似的东西。 如果您需要可重入代码,请参阅man strtok_r

#define MAX_BUFFER 200

float Read(FILE* pFile)
{
    char line[MAX_BUFFER];

    while(fgets(line, MAX_BUFFER, pFile) != NULL)
    {
        char* ptr = strtok(line, " ");

        while(ptr != NULL)
        {
            printf("2.5f ", (float)atof(ptr));
            ptr = strtok(NULL, " ");
        }

        printf("\n");
    }
}

请注意,您编写了行[50],但在fgets()中读取了200,即a 潜在缓冲区溢出。 '我'甚至没有宣布,pFile从未使用过。

答案 1 :(得分:0)

查找strtok并进行标记。

确保考虑几件事情,例如找出所需阵列的长度(内存管理),跟踪阵列中的位置等等。