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() 才能获得正确的值? [复制]