scanf(%s) an issue with EOF

scanf(%s) an issue with EOF

本文关键字:issue with EOF an scanf      更新时间:2023-10-16

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

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

如果我运行程序并输入例如:word^Z^Z是EOF。程序停留在原地,卡在scanf中,尽管我确实输入了word,然后ctrl+z,然后Enter。但不知何故,它停留在scanf中,这与重定向是一样的,就像它不是ctrl +z或任何东西的问题。

我希望我能得到一些帮助

提前感谢,非常感谢:)

scanf使用空白作为分隔符将读取的数据存储到各个字段中。在命令行中输入ControlZ,则Enter只将EOF字符放入输入流中,scanf()继续等待空格。如果您再次点击输入scanf将接收空白字符,并且包括EOF在内的所有内容将存储到ch数组中。

这是一个示例运行。第一行是输入,第二行是输出。

Hello^Z
Hello→