2012-12-03 75 views
3

我认为(直到现在)getch()函数从输入缓冲区(或键盘,简单)中读取一个字符。但是我必须和我的实验室老师争论。他们说getch()的唯一工作是保存程序的执行。我知道getch()可以这样使用。但我只是想知道这是它发明的真正目的吗?或者,它很少用于获取单字符输入吗?C中getch()究竟做了什么?

+9

你的导师是一个无知的傻瓜。 –

回答

6

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

如果你谈论的是由Turbo-C实现,那么我不知道该阻塞语义的getch(),但如果其主要目的是暂停执行程序的功能将肯定被命名的东西更容易,如pause()waitkb()或类似的东西。

+0

是啊!我正在谈论由Turbo-C实施的getch() – cipher

+0

@Downvoter:请评论。 – dreamlax

+0

是啊!我认为没有理由在这里下决心。有人必须羡慕:D – cipher

2

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

但直到你提供给它等待输入字符,意味着直到它返回的值按键

获取字符输入,您可以在程序中的任意位置使用它,但为了查看程序的输出而无需打开输出窗口(在Turbo C编译器中),您可以将它用作您的最后一个语句程序

+0

只适用于Turbo C等编译器。从命令提示符运行或使用其他编译器如Code :: Blocks。我不认为这是必要的条件。因为@krishnabhadra说 – cipher

1

有一个描述getch()here

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

5

如你所知,getch()从输入中读取单个字节字符。

在的Turbo C编译器的那些伟大的日子,

残培中常见的用法是,你可以,如果你使用的是 查看 程序的输出(如果有的话),而不必打开输出窗口turbo c编译器,或者如果你不是从命令运行你的程序 提示

啊,那些日子!

BTW getch is said to be deprecated.

+0

他的实验室教师不是*正确的*,因为他的实验室教官说暂停程序执行是'getch()'的唯一目的。 – dreamlax

+0

哎呀..他有没有说..是的,从问题..谢谢..编辑.. – Krishnabhadra

+0

Downvoter请关心评论 – Krishnabhadra

2

的getch()是一种方式来获得用户输入的字符。它可以用来保存程序的执行,但“保持”只是其主要目的的一个副作用,即等待用户输入一个字符。如果执行保持程序的唯一目的,他们就不会让getch(),因为还有其他方法来保存程序执行。另外,请记住,残培()不是独立于平台,因此在你自己的危险使用...