我一直试图找出我出错的地方,但我似乎无法指出我的错误究竟在哪里。
我正在尝试从我的文本文件中读取这些整数
5 2 4 9 10 1 8 13 12 6 3 7 11
进入一个数组A.为了确保它有效,我试图打印A但只获得大的随机数。有人可以帮我看看我哪里出错吗?
int main(){
FILE* in = fopen("input.txt","r");
int A[100];
while(!feof(in)){
fscanf(in, "%s", &A);
printf("%d", A)
}
fclose(in);
return 0;
}
*这只是与问题相关的代码的主要部分
答案 0 :(得分:1)
对于所有真正阅读为什么使用feof
总是错误的人,解决方案类似于以下内容。代码将打开作为程序的第一个参数给出的文件名(或默认情况下从stdin
读取):
#include <stdio.h>
enum { MAXI = 100 };
int main (int argc, char **argv) {
int i = 0, A[MAXI] = {0}; /* initialize variables */
/* read from file specified as argument 1 (or stdin, default) */
FILE *in = argc > 1 ? fopen (argv[1],"r") : stdin;
if (!in) { /* validate file opened for reading */
fprintf (stderr, "error: file open failed '%s'.\n", argv[1]);
return 1;
}
/* read each number from file or until array full */
while (i < MAXI && fscanf (in, " %d", &A[i]) == 1)
printf (" %d", A[i++]);
putchar ('\n');
if (in != stdin) fclose (in);
printf ("\n '%d' numbers read from the file.\n\n", i);
return 0;
}
示例使用/输出
使用文件dat/myints.txt
中的示例值会产生以下结果:
$ ./bin/rdints dat/myints.txt
5 2 4 9 10 1 8 13 12 6 3 7 11
'13' numbers read from the file.