(1)fgets函式的理解和用法
阿新 • • 發佈:2019-02-10
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的下一次呼叫會繼續讀該行。
用法舉例:
讀取一個檔案並列印之
- FILE * fp = fopen(argv[1],"r");
- char buf[200];
- while (fgets(buf,200,fp) != NULL) { /* 每行的字元不能超過199才能正常工作 */
- printf("%s",buf);
- }
注意列印不用使用 printf("%s/n",buf),因為它會把換行符也讀進去
下次呼叫會繼續讀取下一行內容。