2017-04-09 107 views
0

我是C新手,所以我想獲得更多的庫函數經驗。當我開始擺弄getch()時,我不能爲了我的生活而開始工作。所發生的只是這些角色被回顯到控制檯,我可以輸入多個,甚至按下輸入鍵,而不必在整個程序中繼續輸入。這是我製作的一個小測試代碼。任何想法,我哪裏錯了?Getch只是拒絕爲我工作,因爲它應該

#include <stdlib.h> 
#include <stdio.h> 
#include <conio.h> 



int main(){ 
    char i = '9'; 
    i = getch(); 
    printf("%c", i); 

} 

編輯:謝謝你所有的答案,雖然我可以更清楚我想要什麼。我希望getch()幾乎可以像fgets()一樣使用,除非我不希望它回顯,我希望控制檯能夠接受立即輸入的字符,而不需要按任何回車鍵。 getch錯誤的工具來做到這一點?

+1

這是不是真的清楚什麼是你的目標? – yakobom

+0

[如何獲得在控制檯按鍵事件(HTTP的可能重複:/ /stackoverflow.com/questions/14973046/how-to-get-keypress-event-in-console) –

+0

你可能想看看'ncurses'庫。 –

回答

1

更改此

i = getch(); 

i = getchar(); 

getchar()是一個標準的功能會從標準輸入一個字符。

getch()是非標準的。它從鍵盤獲得一個字符(可能與標準輸入不同)並且不會回顯它。

+2

非標準*和*不可移植(意味着它不能保證存在,更不用說重現所需的行爲),與''中的所有內容一樣。同時將'char i'改爲'int i',因爲'getchar'返回'int',並且'printf(「%c」,i);'to'if(i!= EOF){putchar(i); }'來處理'EOF'並正確讀取錯誤。 – Sebivor

+0

是正確的 – Arvindsinc2

1

getch()是一個函數,用於結束或關閉conio頭文件在窗口中使用的主函數。 沒有使用stdlib頭函數,它將字符串 作爲函數使用。 %c用於打印字符。 如果u要打印我不是去像下面提及: -

#include <stdio.h> 
#include <conio.h> 
void main() 
{ 
int i = 9; 
printf("%d", i); 
getch(); 
} 
相關問題