我的程序应该以以下方式运行:
CProgram < file.txt
file.txt可以拥有任意多行的数据。例如,
2 3 G 5 6
5 6 7
6 9 3 6 H
<<Blank line>>
有没有办法知道没有更多的输入行?每个文件的末尾都有一个空行。
我能够读取行,但我的程序永远不知道是否有更多的数据需要读取,并且一直在等待更多的数据,就像通常从stdin中期望的那样。
我就是这么读的
while( fgets(line, sizeof(line), stdin) != NULL) {
... do something
}
发布于 2018-06-07 04:38:19
EOF
表示文件的末尾,所以您可以读取文件,直到到达EOF
为止。
int c = 0;
while ((c = getchar ()) != EOF) { ... }
编辑:
while ( fgets(line, sizeof(line), stdin) != NULL ) {
... do something
}
应该可以正常工作,因为如果fgets()
到达文件末尾,它会返回NULL
。至少在Unix之类的操作系统(Unix/Linux/BSD/Mac )中,一切都是文件,标准输入也是如此。这样您就可以在标准输入上检查EOF
。
发布于 2018-06-07 04:56:55
由于您正在从stdin
读取并使用fgets()
,因此要终止循环,或者用户没有更多的行,请检查fgets()
的返回值,如下所示。
char *ptr = NULL;
while( (ptr= fgets(line, sizeof(line), stdin)) != NULL) {
if( *ptr == '\n')
break;
else { /* do something */ }
}
最后,当您按ENTER键时,if
条件将为true并终止。
https://stackoverflow.com/questions/50732873
复制相似问题