黑馬程序員-C語言的輸入函數

------<a href="http://www.itheima.com" target="blank">Java培訓、Android培訓、iOS培訓、.Net培訓</a>、期待與您交流! -------

在C語言中,常用的用於輸入的函數有 scanf,gets,fgets 

相比較這三個輸入函數,都有各自的優缺點,以輸入字符串爲例。

scanf 函數,優點:輸入字符串,不檢查長度,你輸入多少,他就使用多少內存。另外可以用於多種數據類型的輸入。

缺點:輸入多少就佔用多少內存,即使是系統關鍵內存,也可以覆蓋掉,可能會引發錯誤。另外就是,輸入的字符串無法含有空格。

gets函數,優點:相比較scanf函數來說,可以輸入空格,應該是gets函數最大的優點了。

缺點:其沒有指定輸入字符的大小,限制輸入緩衝區得大小,如果輸入的字符大於定義的數組長度,會發生內存越界,堆棧溢出。後果很嚴重。

fgets函數,優點:安全,函數原型爲char *fgets(char *buf, int bufsize, FILE *stream) ,當輸入的時候限定了輸入字符串的長度,不會發生內存越界,堆棧溢出。

缺點:只能輸入字符串。

當我們在程序中需要使用輸入的時候,爲了程序的安全性來考慮,建議使用fgets來進行輸入。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章