scanf(%s)是EOF的问题

时间:2013-01-14 04:29:17

标签: c++ c codeblocks

我使用scanf是因为我们必须使用它。  问题如下: (这只是问题的一个例子):

    int main() {
        char ch [10]={0};
        scanf("%s",ch);

        printf("%s",ch);
    }

如果我运行程序并输入例如:word ^ Z. 当^ Z是EOF时。 程序保持原位,卡在scanf中,althogh我输入了word然后按ctrl + z然后回车。但不知何故,它停留在scanf中,与重定向相同,就像它不是ctr + z或其他任何问题一样。

我希望我能得到一些帮助

提前谢谢, 完全适用它:)

1 个答案:

答案 0 :(得分:2)

scanf使用空格作为分隔符将读取的数据存储到各个字段中。从命令行输入 Control Z ,然后 Enter 仅将EOF字符放入输入流和{{1}继续等待空白。如果再次按 Enter scanf()将收到空白字符,包括scanf在内的所有内容都将存储到EOF数组中。

这是一个样本运行。第一行是输入,第二行是输出。

ch