C語言通常使用scanf處理輸入,如果要讀取字串,那麼就需要定義一個字元陣列(char[]
)。可是,如果陣列定義長度不足,就可能發生溢位。
在C語言裡有個可以用來讀取字元的函式(getchar
),我們可以利用這個函式來實現不定長的字串輸入。下面我們就來講講如何做到這一點。
首先,說一下原理:getchar
每次只能讀取一個字元。因此,我通過迴圈使用getchar
逐個讀取字元的方式,將所有輸入字元讀取。
那麼,我們要先解決一個問題:
什麼時候結束迴圈不再讀取呢?
當我們輸入字串後,按下Enter鍵,那麼輸入的字串就會被程式接收,寫入輸入緩衝區的除了剛才輸入的字串,還會有一個換行符
,因此
getchar
當讀取到字元
時,即可跳出迴圈,完成讀取。跳出迴圈後我們還要在後面加上