fgets (File input/output) – C 中文開發手冊
阿新 • • 發佈:2020-07-11
[
C 語言中文開發手冊
fgets (File input/output) - C 中文開發手冊
在標頭檔案<stdio.h>中定義 | | |
---|---|---|
char * fgets(char * str,int count,FILE * stream); | | (直到C99) |
char * fgets(char * restrict str,int count,FILE * restrict stream); | | (自C99以來) |
count - 1從給定的檔案流中讀取大多數字符並將它們儲存在指向的字元陣列中str。如果發生檔案結尾或發現換行符,則停止解析,在這種情況下str將包含該換行符。如果沒有發生錯誤,則在寫入最後一個字元後立即寫入空字元str。如果count小於1 ,行為是不確定的。
引數
str | - | 指向char陣列的元素的指標 |
---|---|---|
計數 | - | 要寫入的最大字元數(通常是str的長度) |
流 | - | 檔案流從中讀取資料 |
返回值
str 成功時,空指標失敗。如果故障是由檔案結束條件引起的,則另外設定eof指示器(參見feof())stream。str在這種情況下,指向的陣列內容不會改變。如果故障是由其他錯誤引起的,請設定錯誤指示器(參見ferror())stream。指向的陣列的內容str是不確定的(它甚至可能不以null結尾)。
注意
如果遇到除檔案結束條件以外的故障,POSIX還需要這些fgets設定errno。雖然標準規範是不明確的count==1,普通實現不讀取字元,儲存零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函式(p:331) C99標準(ISO / IEC 9899:1999): 7.19.7.2 fgets函式(p:296) C89 / C90標準(ISO / IEC 9899:1990): 4.9.7.2 fgets函式
C 語言中文開發手冊 ]