【发布时间】:2011-07-02 03:20:55
【问题描述】:
有可能吗?使用常规 scanf 或 getchar 不起作用,因为 输入字符后我必须按“回车”。
【问题讨论】:
-
查看this answer 的相关问题,这可能会有所帮助。
-
您必须按回车键,因为您的控制台会缓冲输入。您可以更改此行为,但这与平台无关。
有可能吗?使用常规 scanf 或 getchar 不起作用,因为 输入字符后我必须按“回车”。
【问题讨论】:
您正在接近ncurses 的域。
【讨论】:
C 中的输入流被缓冲。
缓冲区是数据在准备好被处理之前临时保存的地方。
当以下三种情况之一发生时,缓冲区会被刷新(清空):
您将不得不使用标准库中未包含的工具才能拥有该功能。
【讨论】:
流媒体功能正在成为阻碍。可能有一个fcntl 选项来关闭缓冲。或者使用较低级别的read 调用可能会更好。
【讨论】:
使用纯标准 C 是不可能的。您必须使用特定于系统的库,如 conio.h 或 Windows API 等。
【讨论】:
也许conio.h 中的getch() 是您需要的,但请注意它是非标准的。
【讨论】: