1. 程式人生 > >C語言輸入字元和字串

C語言輸入字元和字串

字元:

對三個函式的總結:getchar(),getche(),getch()

函式緩衝區標頭檔案回顯適用平臺
getchar()stdio.hWindows、Linux、Mac OS 等所有平臺
getche()conio.hWindows
getch()conio.hWindows
使用者按下回車鍵時,getchar() 將讀取到\n字元,而 getch() 將讀取到\r字元。也就是說,對於不同的字元輸入函式,回車鍵產生的字元不同,這個細節讀者要引起注意。
字串:gets() 是有緩衝區的,每次按下回車鍵,就代表當前輸入結束了,gets() 開始從緩衝區中讀取內容,這一點和 scanf() 是一樣的。gets() 和 scanf() 的主要區別是:
  • scanf() 讀取字串時以空格為分隔,遇到空格就認為當前字串結束了,所以無法讀取含有空格的字串。
  • gets() 認為空格也是字串的一部分,只有遇到回車鍵時才認為字串輸入結束,所以,不管輸入了多少個空格,只要不按下回車鍵,對 gets() 來說就是一個完整的字串。
  • 也就是說,gets() 能讀取含有空格的字串,而 scanf() 不能。

總結

C語言中常用的從控制檯讀取資料的函式有五個,它們分別是 scanf()、getchar()、getche()、getch() 和 gets()。其中 scanf()、getchar()、gets() 是標準函式,適用於所有平臺;getche() 和 getch() 不是標準函式,只能用於 Windows。


scanf() 是通用的輸入函式,它可以讀取多種型別的資料。

getchar()、getche() 和 getch() 是專用的字元輸入函式,它們在緩衝區和回顯方面與 scanf() 有著不同的特性,是 scanf() 不能替代的。

gets() 是專用的字串輸入函式,與 scanf() 相比,gets() 的主要優勢是可以讀取含有空格的字串。

scanf() 可以一次性讀取多份型別相同或者不同的資料,getchar()、getche()、getch() 和 gets() 每次只能讀取一份特定型別的資料,不能一次性讀取多份資料。