?
Dokumen ini menggunakan Manual laman web PHP Cina Lepaskan
在頭文件<stdio.h>中定義 | ||
---|---|---|
char * fgets(char * str,int count,F(xiàn)ILE * stream); | (直到C99) | |
char * fgets(char * restrict str,int count,F(xiàn)ILE * restrict stream); | (自C99以來) |
count - 1
從給定的文件流中讀取大多數(shù)字符并將它們存儲在指向的字符數(shù)組中str
。如果發(fā)生文件結(jié)尾或發(fā)現(xiàn)換行符,則停止解析,在這種情況下str
將包含該換行符。如果沒有發(fā)生錯誤,則在寫入最后一個字符后立即寫入空字符str
。
如果count
小于1 ,行為是不確定的。
str | - | 指向char數(shù)組的元素的指針 |
---|---|---|
計數(shù) | - | 要寫入的最大字符數(shù)(通常是str的長度) |
流 | - | 文件流從中讀取數(shù)據(jù) |
str
成功時,空指針失敗。
如果故障是由文件結(jié)束條件引起的,則另外設(shè)置eof指示器(參見feof()
)stream
。str
在這種情況下,指向的數(shù)組內(nèi)容不會改變。
如果故障是由其他錯誤引起的,請設(shè)置錯誤指示器(參見ferror()
)stream
。指向的數(shù)組的內(nèi)容str
是不確定的(它甚至可能不以null結(jié)尾)。
如果遇到除文件結(jié)束條件以外的故障,POSIX還需要這些fgets
設(shè)置errno
。
雖然標準規(guī)范是不明確的count==1
,普通實現(xiàn)不讀取字符,存儲零str[0]
和報告成功(返回str
)。
#include <stdio.h>#include <stdlib.h> int main(void){ FILE* tmpf = tmpfile(); fputs("Alan Turing\n", tmpf); fputs("John von Neumann\n", tmpf); fputs("Alonzo Church\n", tmpf); rewind(tmpf); char buf[8]; while (fgets(buf, sizeof buf, tmpf) != NULL) printf("\"%s\"\n", buf); if (feof(tmpf)) puts("End of file reached");}
輸出:
"Alan Tu""ring ""John vo""n Neuma""nn ""Alonzo ""Church " End of file reached
C11標準(ISO / IEC 9899:2011):
7.21.7.2 fgets函數(shù)(p:331)
C99標準(ISO / IEC 9899:1999):
7.19.7.2 fgets函數(shù)(p:296)
C89 / C90標準(ISO / IEC 9899:1990):
4.9.7.2 fgets函數(shù)