我正在寫一個函數,基本上等待用戶點擊「輸入」,然後做一些事情。什麼我發現,當測試是下面的作品:使用getc從控制檯讀 r(回車)與 n(換行符)?
#include <stdio.h>
int main()
{
int x = getc(stdin);
if (x == '\n') {
printf("carriage return");
printf("\n");
}
else {
printf("missed it");
printf("\n");
}
}
這個問題我有,什麼我想首先是要做到:if (x == '\r')
但在測試中,程序沒趕上我按下回車鍵。 '\n'
似乎對應於我從控制檯進入輸入。有人可以解釋這種差異嗎?另外,要驗證,將它寫爲if... == "\n"
意味着字符串文字?即用戶從字面上必須從控制檯輸入"\n"
,對嗎?
相關:http://stackoverflow.com/questions/1355095/what-is-the-difference-between-r-and-n – Mysticial 2012-04-07 23:20:32
C對單引號和雙引號文字應用轉義,所以「\ n」是字符串長度爲兩個字符,第一個是ASCII碼10(\ n本身),第二個是ASCII NUL(空終止符)。 – toriningen 2012-04-07 23:30:38
(我希望你不介意編輯標題,他們在那裏,使之更加搜索) – 2012-04-07 23:32:14