字符串處理函數fgets()和gets()

scanf():一次只能接受一個單詞,不能接受一行

gets():接受一整行的輸入,輸入多少就讀取多少,但有可能輸入的長度和要賦值的變量目標不一致而導致緩衝區溢出,這也就意味着它可能會改變不屬於當前程序所在空間的數據,一次在新標準C11中已經被廢棄不用了,不提倡使用gets()。

gets_s():​新標準C11中的可選項,因爲是可選的所以可能有的編譯器並沒有實現這個函數 所以也就不支持這個函數,它相比較gets()多了一個參數,需要指明待讀取內容的長度防止數組越界。


fgets():​一共有三個參數,第一個參數:存儲所得數據的緩衝區;第二個參數:讀入數據的最大長度,第三個:我們選擇需要輸入的地方 例如stdio表示從鍵盤輸入


ps:gets()在讀取到換行符後會將它丟棄,而fgets()則會保留換行符​,將換行符讀取到字符串之中。puts()輸出是會在字符串最後補一個換行符,而fputs()則不會,所以一般gets()搭配puts()使用;fgets()搭配fputs()使用。

發佈了49 篇原創文章 · 獲贊 15 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章