gpt4 book ai didi

c - 将文件中的数字存储到数组中

转载 作者:行者123 更新时间:2023-11-30 14:49:02 25 4
gpt4 key购买 nike

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

该文件如下所示:

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 编码了,我不知道为什么语法没有达到预期的效果。有什么想法吗?

谢谢!

最佳答案

阅读fscanf的手册页并检查返回值。 man 3 fscanf

These functions return the number of input items successfully matched and assigned, which can be fewer than provided for, or even zero in the event of an early matching failure

替换

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

while (i < 2500 && fscanf(R, "%d ", &array[i]) == 1) { /*return 1 if read one item */
i++ ;
}

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

关于c - 将文件中的数字存储到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50063929/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com