我正在编写一个算法,该算法从命令提示符获取文件并将其数字存入数组。
该文件如下所示:
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编码一段时间,我不知道为什么语法没有预期的效果。 有什么想法吗?
谢谢!
答案 0 :(得分:1)
阅读Layout.vue
&amp;的手册页。检查返回值。 fscanf
说
这些函数成功返回输入项的数量 匹配 和分配,可以少于提供,甚至零 早期匹配失败的事件
替换
man 3 fscanf
与
while (!feof(R)) {
fscanf(R, "%d ", &array[i]) ;
i++ ;
}