fscanf()之后的代码不会执行

时间:2015-01-24 17:45:05

标签: c scanf

我是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读完时,它不会执行任何后续操作。有一些我不知道的概念吗?提前谢谢。

1 个答案:

答案 0 :(得分:5)

您需要将其更改为查找EOF

while (EOF != fscanf(input, "%s",string)) {

EOF字符在Windows中为^Z,在* nix中为^D(即Ctrl + Z或Ctrl + D)。输入EOF字符后,您仍然必须按Enter键,因为键盘输入将被行缓冲。