------<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來進行輸入。