fgets()函數 //gets()的替代品

函數原型 char *fgets(char *buf, int bufsize, FILE *stream)

參數:

*buf:指向用來存儲所得數據的地址

bufsize:整型,指明存儲數據的大小,如果參數值爲n,那麼fgets()函數將讀取n-1個字符,或者讀到遇到的第一個換行符爲止。

*stream:文件結構體指針,將要讀取的文件流。如果是從鍵盤接受的數據,則以stdio作爲參數,該標識符定義在stdio.h中。

返回值:

  1. 成功,返回第一個參數buf
  2. 在讀取字符時遇到end—of—file,則eof指示器被設置。如果還沒讀入任何字符就遇到這種情況,則buf保持原來的內容,返回NULL。
  3. 如果發生讀入錯誤,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個字符,剩下的丟棄
*/

 

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