getch() 等待 Enter 键? [复制]

Posted

技术标签:

【中文标题】getch() 等待 Enter 键? [复制]【英文标题】:getch() waits for Enter key? [duplicate] 【发布时间】:2012-11-21 00:40:33 【问题描述】:

可能重复:C/C++: Capture characters from standard input without waiting for enter to be pressed

我在 Windows 7 上使用 C-Free 4 Standard 并且正在编写一个 C 程序。

我使用 getch() 作为暂停程序的函数,但是,按下的字符会在屏幕上回显,它会等待按下 Enter 键,然后再继续(它看起来没有任何不同于 scanf 的工作方式)。我尝试了getche(),它工作正常,虽然出现了回声。

getch() 函数可能有什么问题?

【问题讨论】:

【参考方案1】:

getch、wgetch、mvgetch 和 mvwgetch 例程读取一个字符 从窗口。在无延迟模式下,如果没有输入等待,则值 返回 ERR。在延迟模式下,程序一直等到系统 将文本传递给程序。根据设置 cbreak,这是在一个字符之后(cbreak 模式),或者在第一个字符之后 换行符(nocbreak 模式)。在半延迟模式下,程序等到一个 输入字符或已达到指定的超时时间。

在 Windows 中使用或多或少相同的方法。您可以使用 _getch() 获取应用程序可用的输入字符,而无需缓冲。

【讨论】:

【参考方案2】:

事实上,有几种方法可以pause 执行你的程序直到你输入一些东西,其中一种方法是使用getchar()(这是stdio.h 函数集的一部分和一个官方标准library), 和getch() 的效果一样(这个函数是conio.h library 的函数集的一部分,不是官方库)。

如果您的问题是您希望避免每次输入问题中不太清楚的字符时都按Enter),请阅读以下内容:How to avoid press enter with any getchar()

【讨论】:

不,gethcar 也像 getche 一样回响

以上是关于getch() 等待 Enter 键? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥我需要两个 _getch() 才能获得正确的值? [复制]

getch与getchar区别

如何在 Elixir 中不按 Enter 键获取单个字符?

无需等待输入就可以获取字符

如何防止在 jQuery 中提交 Enter 键? [复制]

按ENTER键调用javascript函数? [复制]