将数字从文件存储到数组

时间:2018-04-27 13:55:19

标签: c arrays loops

我正在编写一个算法,该算法从命令提示符获取文件并将其数字存入数组。

该文件如下所示:

12 563 898 521

以下是代码:

// INCLUSION
#include <stdio.h>
#include <stdlib.h>

//  CODE

void howto(const char *) ;

int main(int k, const char *argv[])
{   if (k < 2) howto(*argv) ;
    int i = 0, array[2500] ;
    FILE * R = fopen(argv[1], "r") ;

    // pass file content to array
    if (! R) return 1 ;
    while (!feof(R)) {
        fscanf(R, "%d ", &array[i]) ;
        i++ ; }
    fclose(R) ;
    for(int x = 0 ; x < i ; x++ ) {
        printf("lol : %d\n", array[x]) ; }
    return 0 ; }

void howto(const char *P) {printf("Expected: %s <file to read>\n", P) ; }

代码在没有警告但没有结果的情况下运行:它会永远运行。 我猜我的问题来到我的while循环,但我没有在C编码一段时间,我不知道为什么语法没有预期的效果。 有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

阅读Layout.vue&amp;的手册页。检查返回值。 fscanf

  

这些函数成功返回输入项的数量   匹配          和分配,可以少于提供,甚至零          早期匹配失败的事件

替换

man 3 fscanf

while (!feof(R)) {
      fscanf(R, "%d ", &array[i]) ;
      i++ ; 
}

另请阅读Why is “while ( !feof (file) )” always wrong?