我正在尝试使用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;
}
我做错了什么?
答案 0 :(得分:5)
当你应该使用%f时,你正在使用%d,并且宣读读数[]为双倍。
答案 1 :(得分:1)
我看到两个问题。
您的文件中有一个实数列表,但您已声明了int
的数组。将数据类型更改为float Readings[2881];
或double Readings[2881];
后,即可开始阅读。
如果您决定使用float Readings[2881];
,请将fscanf
语句更改为fscanf (temp, "%f", &Readings[Temps]);
。如果您决定使用doulbe Readings[2881];
,请将fscanf
语句更改为fscanf (temp, "%lf", &Readings[Temps]);
答案 2 :(得分:0)
%d
是整数的格式说明符,但您正在读取浮点数 - 请改用%f
。