4

我认为(到目前为止) getch() 函数从输入缓冲区(或键盘,简单地说)读取字符。但我不得不和我的实验室导师争论。他们说 getch() 的唯一工作是保持程序执行。我知道 getch() 可以这样使用。但我只是想知道这是发明它的真正目的吗?或者,它很少用于获取单字符输入吗?

4

5 回答 5

7

getch用于“从与当前窗口关联的终端读取单字节字符”,由 POSIX 指定。这是它的主要功能。它可以配置为非阻塞(例如,如果没有输入,该函数会立即返回),因此您的实验室指导员说它的唯一目的是暂停程序执行是错误的。

如果您谈论的是getch()由 Turbo-C 实现的,那么我不确定阻塞语义,但如果它的主要目的是暂停程序执行,则该函数肯定会被命名为更合适的名称,例如pause()orwaitkb()或类似的名称。

于 2012-12-03T04:55:47.577 回答
6

众所周知,getch() 从输入中读取一个单字节字符。

在 Turbo C 编译器的伟大时代,

getch 的常见用途是,如果您使用的是 turbo c 编译器或者您没有从命令提示符运行程序,则无需打开输出窗口即可查看程序的输出(如果有)

啊,那是几天!

BTW getch 据说已被弃用。

于 2012-12-03T04:49:13.457 回答
2

是的,getch()得到一个字符,这是正确的,这意味着你必须给一个输入字符,这是主要工作

但是在您提供输入字符之前,它会等待,这意味着直到它返回按键的值

对于获取字符输入,您可以在程序中的任何地方使用它,但是为了查看程序的输出而无需打开输出窗口(在 Turbo C 编译器中),您可以将其用作程序的最后一条语句

于 2012-12-03T04:47:28.820 回答
2

getch() 是一种获取用户输入字符的方法。它可用于暂停程序执行,但“暂停”只是其主要目的的副作用,即等待用户输入字符。如果保持程序执行是其唯一目的,他们就不会使用 getch(),因为还有其他方法可以保持程序执行。另外,请记住 getch() 不是独立于平台的,因此使用风险自负...

于 2012-12-03T04:51:57.867 回答
1

这里有getch()的描述

它确实将按键的值作为 int 返回。

于 2012-12-03T04:47:44.737 回答