c++ - scanf(%s) EOF 问题

标签 c++ c codeblocks

我使用 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() 继续等待空格。如果您再次按下 Enterscanf 将接收到空白字符,并且包括 EOF 在内的所有内容都将存储到 ch数组。

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

Hello^Z
Hello→

关于c++ - scanf(%s) EOF 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14313344/

相关文章:

c++ - 未定义对链接库中 SDL2 函数的引用 (Code::Blocks)

c++ - 字符串超出范围异常

c++ - 动态添加 boost::filtering_stream 过滤器

c++ - Premake 无法在 Linux 上使用 g++?

c - 构建 mlt 时,Cygwin 中对 WinMain 的 undefined reference

c++ - SFML loadFromFile undefined reference (测试有效,但添加图像时崩溃)

OpenCV 2.3 & Code::Blocks 小框架设置问题

java - 这个 SQL 会导致任何问题吗?

c - 释放可能未初始化的结构成员

c++ - 查找分配数据的未执行位