【发布时间】:2018-04-27 13:55:19
【问题描述】:
我正在编写一种算法,该算法从命令提示符获取文件并将其数字存储到数组中。
文件如下所示:
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 编码了,我不知道为什么语法没有达到预期的效果。 有什么想法吗?
谢谢!
【问题讨论】:
-
请使用正统的C布局风格,最好是Allman或1TBS。 Pico 样式对于 Pico 是可以的,但对于 C 则不行。
-
请注意,如果输入是交互式的,
scanf()-family 格式字符串中的尾随空格会很糟糕。另外,你应该检查你没有溢出数组。 -
@JonathanLeffler 你能详细说明我不应该在我的 fscanf 中使用空白的原因吗?
-
@InTheMoodForNow 您可以从 Wiki 开始:en.wikipedia.org/wiki/Indentation_style#Styles