4

可能重复:
C/C++:从标准输入中捕获字符而不等待按下回车键

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

我正在使用 getch() 作为暂停程序的函数,但是,按下的字符会在屏幕上回显,它会在继续之前等待按下 Enter 键(它看起来与scanf 有效)。我尝试了 getche(),它工作正常,尽管出现了回声。

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

4

2 回答 2

2

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

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

于 2012-12-03T14:32:16.537 回答
0

实际上,在pause您输入某些内容之前,有几种方法可以执行您的程序,其中一种方法是使用getchar()(它是官方标准库的函数集的一部分stdio.h),它会产生相同的效果as getch()(此函数是conio.h库函数集的一部分,它不是官方库)。

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

于 2012-12-03T14:29:55.677 回答