2012-12-03 86 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(),因爲還有其他方法來保存程序執行。另外,請記住,殘培()不是獨立於平臺,因此在你自己的危險使用...