【发布时间】:2018-11-14 00:01:09
【问题描述】:
我正在尝试从终端读取输入,如果有空行并按下输入,我想停止读取输入。这是我目前拥有的。
#include <stdio.h>
#include <string.h>
int main(int argc,char const *argv[]){
char input[1024];
while(fgets(input,1024,stdin)!=NULL){
printf("%s", input);
}
if(EOF){
printf("EOF");
}
return 0;
}
【问题讨论】:
-
您的代码将始终打印
"EOF",因为根据标准,EOF是非零且固定的。检查空行(仅限单个换行符)是微不足道的。while(fgets(input,1024,stdin)!=NULL && *input != '\n'),但这不会解决您在 while 循环之后的问题。 -
查看
fgets在成功和文件结束时返回的内容。这确实是有据可查的行为。 -
我想我之前从未见过有人尝试过
if(EOF)...恭喜你在C中找到了新的尝试 -
程序中不使用命令行参数时,
main()的定义合适的形式是int main(void)。 -
您拥有
if (EOF)的地方是有趣的,它可能是适合使用feof()的少数地方之一:if (feof(stdin)) printf("EOF\n"); else if (ferror(stdin)) printf("ERR\n"); else assert("can't happen" == 0);是正确的。但请注意:Why iswhile (!feof(file))always wrong?