getchar() putchar()
getchar()獲取從鍵盤輸入的單個字符 putchar()將單個字符發送至屏幕
雖然getchar()獲取單個字符,但除非按下Enter 鍵 否則控制不會返回程序
getchar() 函數命令C程序將輸入放入緩衝區(buffer),按下Enter鍵後 緩衝區的內容以每次一個字符釋放
所以 1.沒有按下Enter鍵就可以按下Backspace 鍵修正已鍵入的錯誤字符
2.如果不處理按下的Enter鍵 , Enter鍵將留在緩衝區
例如:
first=getchar();
last=getchar();
如果要鍵入GT 則G應該存入變量first中 T應該存入last中 然而並非如此
第一個getchar()在用戶按下Enter之前不會結束 按下 G後 ,G 留在緩衝區 只有按下Enter ,G 纔會離開緩衝區進入程序 -- 但此時Enter 鍵卻留在了緩衝區 所以第二個getchar()會將Enter 鍵(\n)發送給last 需要額外的getchar()才能繼續讀取T
修復方案:
first=getchar();
x=getchar();//x:儲存鍵入過程中的換行符 不需要處理變量x
last=getchar();
x=getchar();
甚至不用將換行符儲存在變量中
first=getchar();
getchar();//getchar()單獨佔一行 獲取字符後什麼都不做 即丟棄換行符
last=getchar();
getchar();
也可以輸入兩個大寫字母后再按下Enter鍵
first=getchar();//G儲存在變量first中
last=getchar();//T儲存在變量last中
getchar();
getch() putch()
getch()獲取無緩區的單個字符 無需按Enter 按下鍵的同時 立即獲取相應內容
first=getch();
last=getch();
getchar()不會在屏幕上顯示鍵入內容 必須與putch()成對使用
first=getch();
putch(first);
last=getch();
putch(last);
getchar() getch() 對比:
1,getch()比getchar()快 getch()不需要Enter鍵的按下就能直接獲取鍵入的內容
2. getchar()沒有按下Enter鍵就可以按下Backspace 鍵修正已鍵入的錯誤字符,而getch()無緩衝區 自然不能使用