fscanf() 后的代码不执行
Code after fscanf() doesn't execute
我是 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;
}
我遇到的问题是 "Done" 行永远不会打印出来。当 while 循环完成从 stdin 的读取后,它不会执行任何操作。有什么我不知道的概念吗?提前致谢。
您需要更改它以查找 EOF
:
while (EOF != fscanf(input, "%s",string)) {
EOF
字符在 Windows 中是 ^Z
或在 *nix 中是 ^D
(即 Ctrl+Z 或 Ctrl+D)。输入 EOF 字符后,您仍然需要按回车键,因为键盘输入将被行缓冲。
我是 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;
}
我遇到的问题是 "Done" 行永远不会打印出来。当 while 循环完成从 stdin 的读取后,它不会执行任何操作。有什么我不知道的概念吗?提前致谢。
您需要更改它以查找 EOF
:
while (EOF != fscanf(input, "%s",string)) {
EOF
字符在 Windows 中是 ^Z
或在 *nix 中是 ^D
(即 Ctrl+Z 或 Ctrl+D)。输入 EOF 字符后,您仍然需要按回车键,因为键盘输入将被行缓冲。