读到文件末尾到数组

时间:2016-04-19 05:29:23

标签: c arrays file eof scanf

我一直试图找出我出错的地方,但我似乎无法指出我的错误究竟在哪里。

我正在尝试从我的文本文件中读取这些整数

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;
}

*这只是与问题相关的代码的主要部分

1 个答案:

答案 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.