我使用 scanf 是因为我们必须使用它。 问题如下: (这只是问题的一个例子):
int main() {
char ch [10]={0};
scanf("%s",ch);
printf("%s",ch);
}
如果我运行程序并输入例如:word^Z 当 ^Z 是 EOF 时。 该程序保持原位,卡在 scanf 中,尽管我输入了 word,然后按 ctrl+z,然后按 Enter。但不知何故它留在 scanf 中,它与重定向相同,就像它不是 ctr+z 或任何东西的问题。
我希望我能得到一些帮助
提前致谢, 完全欣赏它:)
最佳答案
scanf
使用空格作为分隔符将读取的数据存储到各个字段中。从命令行输入 ControlZ,然后 Enter 只会将 EOF
字符放入输入流,并且 scanf()
继续等待空格。如果您再次按下 Enter,scanf
将接收到空白字符,并且包括 EOF
在内的所有内容都将存储到 ch
数组。
这是一个示例运行。第一行是输入,第二行是输出。
Hello^Z
Hello→
关于c++ - scanf(%s) EOF 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14313344/