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 字符后,您仍然需要按回车键,因为键盘输入将被行缓冲。