1. 程式人生 > >c總結 使用scanf輸入字串問題

c總結 使用scanf輸入字串問題

  學習c時經常遇到字串的輸入問題,使用scanf輸入時總是會或多或少的遇到錯誤,總結一下我遇到過的情況

同時輸入字元和字串

  剛開始編寫時可能大多數會這樣寫:

   (ch1為字元型別的陣列,陣列名即陣列的首地址,所以不要&)

 當輸入  字元  回車時會出現下面情況:

還沒有輸入字串輸入就結束了。當我們需要呼叫scanf輸入的時候,輸入的字元送到鍵盤緩衝區,然後scanf從中讀取所規定的字元,例如 輸入格式為%d,輸入為777a2,實際上輸入進去的時777,輸入77 777,實際上輸入進去的是77,因為空格和回車也會被scanf認為是字元。

 當我們輸入c回車時,scanf從緩衝區把c提走賦予ch,但回車還在緩衝區並未提走,輸入字串時因為回車也是字元所以被賦予給ch1。

使用scanf輸入可以這樣做:

1.

結果是:

getchar() 是從控制檯接收字元,注意只會接收一個字元,此時回車被getchar提走了

2.

結果是:

常用的是這兩種方式,當然也可以直接使用gets()來輸入字串,它會把回車一起提走但不會把回車輸入數組裡,也可以使用fflush(stdin),是將緩衝區清空。