0

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

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

        printf("%s",ch);
    }

如果我运行程序并输入例如:当 ^Z 为 EOF 时,单词 ^Z。程序停留在原地,卡在 scanf 中,尽管我确实输入了 word 然后 ctrl+z 然后 Enter。但不知何故,它停留在 scanf 中,与重定向相同,就像 ctr+z 或任何东西都没有问题。

我希望我能得到一些帮助

在此先感谢,完全欣赏它:)

4

1 回答 1

2

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

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

Hello^Z
Hello→
于 2013-01-14T05:25:41.080 回答