c中使用gets() 提示warning: this program uses gets(), which is unsafe.


今天在C代碼中使用gets()時提示“warning: this program uses gets(), which is unsafe.”,然后這個程序還能運行,無聊的我開始查閱資料,為啥gets()會unsafe呢。

通過Google查閱前輩的問答,原來是這么回事。

gets()這個函數只有一個參數,那就是字符緩沖區的指針,並沒有指定該緩沖區的長度也就是大小。當你輸入一個很長很長的字符串的時候,gets ()函數會把每一個字符都存入到棧(statck)中,因此當字符串很大的時候就會導致程序異常終止。前輩們給的建議是使用fgets()函數替代gets()。

例子:

 

//使用gets()

char buffer[4096];

gets(buffer);

//使用fgets()替換gets()

char buffer[4096]; 

fgets(buffer, (sizeof buffer / sizeof buffer[0]), stdin);

 參考網址:

1、Stackoverflow


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM