我写了一个代码来读取文件“out”中的整数。
#include <stdio.h>
int main()
{
FILE *f1;
int number, i=0,a[10];
f1 = fopen("out", "r");
while(!feof(f1)){ //f1 is your pointer to the file opened with fopen()
fscanf(f1,"%d",&a[i]); //a is array
i++;
printf("%d",a[i]);
}
return 0;
}
out文件只有四个值,如
1
3
4
5
但是当我运行程序时它会像这样给出
13134518624-10740437841345139779220584
我的代码中有问题吗?
答案 0 :(得分:4)
您不打印更多项目,而是打印较大的未初始化值。交换增量和打印语句:
i++;
printf("%d",a[i]);
为:
printf("%d",a[i]);
i++;
但您还需要检查fscanf
函数的返回值,该函数返回成功读取/提取的项的值:
if (fscanf(f1,"%d",&a[i]) == 1) {
printf("%d\n",a[i]);
i++;
}
这是因为只有失败的读取尝试才会设置eof标志,并且在尝试失败后以及打印伪造输出后检查eof。
答案 1 :(得分:1)
fscanf(f1,"%d",&a[i]); //a is array
i++;
printf("%d",a[i]);
您阅读了[i]并打印了[i + 1]
答案 2 :(得分:0)
while(!feof(f1))
{
fscanf(f1,"%d",&a[i]);
printf("%d",a[i++]);
}