【问题标题】:getting a char in c without pressing "enter"在不按“输入”的情况下在 c 中获取一个字符
【发布时间】:2011-07-02 03:20:55
【问题描述】:

有可能吗?使用常规 scanf 或 getchar 不起作用,因为 输入字符后我必须按“回车”。

【问题讨论】:

  • 查看this answer 的相关问题,这可能会有所帮助。
  • 您必须按回车键,因为您的控制台会缓冲输入。您可以更改此行为,但这与平台无关。

标签: c scanf


【解决方案1】:

您正在接近ncurses 的域。

【讨论】:

    【解决方案2】:

    C 中的输入流被缓冲。

    缓冲区是数据在准备好被处理之前临时保存的地方。

    当以下三种情况之一发生时,缓冲区会被刷新(清空):

    • 缓冲区已满。
    • 数据要打印到标准 输出。
    • 缓冲区被显式刷新。 (这就是按 Enter 键的作用)。

    您将不得不使用标准库中未包含的工具才能拥有该功能。

    【讨论】:

      【解决方案3】:

      流媒体功能正在成为阻碍。可能有一个fcntl 选项来关闭缓冲。或者使用较低级别的read 调用可能会更好。

      【讨论】:

        【解决方案4】:

        使用纯标准 C 是不可能的。您必须使用特定于系统的库,如 conio.h 或 Windows API 等。

        【讨论】:

          【解决方案5】:

          也许conio.h 中的getch() 是您需要的,但请注意它是非标准的。

          【讨论】:

            猜你喜欢
            • 2010-09-15
            • 2016-09-22
            • 2015-01-23
            • 1970-01-01
            • 2013-01-24
            • 1970-01-01
            • 1970-01-01
            • 2015-02-13
            • 1970-01-01
            相关资源
            最近更新 更多