从文件C中读取数字列表

时间:2014-03-23 03:19:44

标签: c arrays

我正在尝试使用scanf读取文件中的数字列表到数组中。然后打印出阵列。

该列表由超过一千个数字组成,但例如它看起来像这样。

70.3
71.5
70.1
71.1
71.8
71.6
72.0
72.0
71.8

我有这么多,但它只打印出一个难以理解的数字列表。

int main () {

FILE *temp;
temp = fopen("temp.txt", "r");
int Readings[2881];
int Temps;

    if (!temp)
    {
        printf("Cannot open the file!\n");
        return 0;
    }

for (Temps = 0; Temps < 2881; Temps++)
{
    fscanf (temp, "%d", &Readings[Temps]);
}

for (Temps = 0; Temps < 2881; Temps++)
{
    printf("The readings are %d\n", Readings[Temps]);
}

fclose(temp);

return 0;
}

我做错了什么?

3 个答案:

答案 0 :(得分:5)

当你应该使用%f时,你正在使用%d,并且宣读读数[]为双倍。

答案 1 :(得分:1)

我看到两个问题。

  1. 您的文件中有一个实数列表,但您已声明了int的数组。将数据类型更改为float Readings[2881];double Readings[2881];后,即可开始阅读。

  2. 如果您决定使用float Readings[2881];,请将fscanf语句更改为fscanf (temp, "%f", &Readings[Temps]);。如果您决定使用doulbe Readings[2881];,请将fscanf语句更改为fscanf (temp, "%lf", &Readings[Temps]);

答案 2 :(得分:0)

%d是整数的格式说明符,但您正在读取浮点数 - 请改用%f