函數原型 char *fgets(char *buf, int bufsize, FILE *stream)
參數:
*buf:指向用來存儲所得數據的地址
bufsize:整型,指明存儲數據的大小,如果參數值爲n,那麼fgets()函數將讀取n-1個字符,或者讀到遇到的第一個換行符爲止。
*stream:文件結構體指針,將要讀取的文件流。如果是從鍵盤接受的數據,則以stdio作爲參數,該標識符定義在stdio.h中。
返回值:
- 成功,返回第一個參數buf
- 在讀取字符時遇到end—of—file,則eof指示器被設置。如果還沒讀入任何字符就遇到這種情況,則buf保持原來的內容,返回NULL。
- 如果發生讀入錯誤,error指示器被設置,返回NULL,buf的值可能被改變。
用法:
#include <stdio.h>
#define STLEN 14
int main()
{
char words[STLEN];
fgets(words, STLEN, stdin); //第一次接收字符串(測試不溢出)
puts(words);
fputs(words, stdout);
fgets(words, STLEN, stdin); //第二次接收字符串(測試溢出)
puts(words);
fputs(words, stdout);
return 0;
}
/*
結果表明當輸入的字符數爲0-12的時候,最後兩位存放\n\0
當輸入的字符數爲13的時候,最後一位存放\0,不存放\n
當輸入的字符數大於13的時候,最後一位存放\0,只保存前13個字符,剩下的丟棄
*/