warning:this program uses gets(), which is unsafe

1. 在C語言編程中使用gets(), 編譯時會出現如下警告:

warning: this program uses gets(), which is unsafe.

gets()不安全是因爲你給了他一個緩衝區,但是你卻沒有告訴它這個緩衝區到底有多大,也不知道輸入的內容到底有多大,輸入的內容可能超出緩衝區的結尾,引起你的程序崩潰,使用fgets會好一些,因爲你會指定它的緩衝區大小,如下面一段代碼:

char buffer[bufsize];

fgets(buffer, bufsize, stdin);

2. fgets

原型:char* fgets(char *buf, int bufsize, FILE *stream);

   buf:字符型指針,指向用來存儲所得數據的地址

   bufsize:整形數據,指明緩衝區的大小,拷貝到buf地址的最大字符數量

   stream:指明輸入流的FILE對象的指針,stdin可以作爲參數,表示從標準輸入讀取

返回值:成功,則函數返回buff

       如果當嘗試讀取一個字符時遇到了文件結尾,則eof被置位(feof),如果還沒有成功讀入任何一個字符就遇到了文件結尾,那麼就會返回null,buff中的內容保持不變。如果讀取錯誤發生,那麼error indicator(ferror)被置位,還是返回null

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