我是C的新手,在这里有这么简单的代码:
int main(int argc, char **argv){
FILE *input = stdin;
char string[20];
while (fscanf(input, "%s",string)) {
printf("String: %s \n",string);
}
printf("Done");
return 0;
}
我遇到的问题是“完成”行永远不会打印出来。当while循环从stdin读完时,它不会执行任何后续操作。有一些我不知道的概念吗?提前谢谢。
答案 0 :(得分:5)
您需要将其更改为查找EOF
:
while (EOF != fscanf(input, "%s",string)) {
EOF
字符在Windows中为^Z
,在* nix中为^D
(即Ctrl + Z或Ctrl + D)。输入EOF字符后,您仍然必须按Enter键,因为键盘输入将被行缓冲。