回覆列表
-
1 # 使用者5811302472535
-
2 # 使用者4912889400776
自己測試一下,getchar必須遇到回車才接受指令,getch則隨意
#include
#include
int main()
{
printf("現在開始測試getchar()\n");
getchar();
printf("finish!\n");
printf("現在開始測試getch()\n");
getch();
printf("Finish!!\n");
return 0;
}
一個是回車鍵的鍵值,一個是換行符。getch()函式是返回你按下的鍵的鍵值,它會設定控制檯(你的那個黑色的cmd視窗)為無回顯、無緩衝模式,當按了一個鍵時,getch()函式會立刻返回鍵值(無緩衝),不會顯示你輸入的字元(無回顯)。scanf()、getchar()之類的函式,使用的是標準輸入模式,按什麼鍵,螢幕上就會顯示相應字元,在你按回車鍵時,控制檯會將你輸入的回車換成換行符,存入輸入緩衝區,讓這些函式取出來。你按了什麼鍵, 輸入了什麼字元,輸出了什麼內容,主要是由控制檯的工作模式決定。為什麼Ctrl+J返回的是"\n"?這是控制檯提供的一種直接輸入換行符的方法,不用糾結為什麼非要是Ctrl+J才能輸入換行符;貌似getch()函式不能獲取ctrl、shift之類的按鍵的鍵值,而設計者為了能夠輸入"\n",就恰好選擇了讓Ctrl+J組合鍵能夠輸入"\n"。