1. 程式人生 > >(1)fgets函式的理解和用法

(1)fgets函式的理解和用法

fget函式的原型如下:char *fgets(char *buf, int n, FILE *fp)


功能:從檔案流讀取一行,送到緩衝區,使用時注意以下幾點:

1.當遇到換行符或者緩衝區已滿,fgets就會停止,返回讀到的資料,值得注意的是不能用fgets讀二進位制檔案,因為fgets會把二進位制檔案當成文字檔案來處理,這勢必會產生亂碼。

2.每次呼叫,fgets都會把緩衝區的最後一個字元設為null,這意味著最後一個字元不能用來存放需要的資料,所以如果有一行,含有LINE_SIZE個字元(包括換行符),要想把這行讀入緩衝區,請把引數n設為LINE_SIZE+1

3. 由結論1可推出:給定引數n,fgets只能讀取n-1個字元(包括換行符),如果有一行超過n-1個字元,那麼fgets返回一個不完整的行,也就是說,只讀取該行的前n-1個字元,但是,緩衝區總是以null字元結尾,對fgets的下一次呼叫會繼續讀該行。


用法舉例:
讀取一個檔案並列印之

  1. FILE * fp = fopen(argv[1],"r");
  2. char buf[200];
  3. while (fgets(buf,200,fp) != NULL) {    /* 每行的字元不能超過199才能正常工作 */
  4.       printf("%s",buf);
  5. }

注意列印不用使用   printf("%s/n",buf),因為它會把換行符也讀進去

下次呼叫會繼續讀取下一行內容。