fgets ()- 讀取字串
格式
#include <stdio.h>
char *fgets (char *string, int n, FILE *stream);語言層次
ANSI
安全執行緒
是
說明
fgets() 函數會從現行 串流 位置讀取字元,直到第一個換行字元 (\n) 為止,直到串流結尾為止,或直到讀取的字元數等於 n-1 為止 (看何者先出現)。 fgets() 函數會將結果儲存在 string 中,並將空值字元 (\0) 新增至字串結尾。 string 包含換行字元 (如果已讀取)。 如果 n 等於 1 ,則 字串 是空的。
回覆值
如果成功, fgets() 函數會將指標傳回 string 緩衝區。 NULL 回覆值指出錯誤或檔案結尾狀況。 使用 feof() 或 ferror() 函數來判斷 NULL 值是否指出錯誤或檔案結尾。 在任何一種情況下,字串的值都不會變更。
以 type=record開啟的檔案不支援 fgets() 函數。
錯誤碼的值可以設為:
- Value
- 意義
- EBADF
- 檔案指標或描述子無效。
- ECONVERT
- 發生轉換錯誤。
- ENOTREAD
- 未開啟檔案進行讀取作業。
- GETANDPUT
- 在寫入作業之後發生不容許的讀取作業。
- 埃雷西奧
- 開啟檔案以進行記錄 I/O。
- ESTDIN
- 無法開啟
stdin。 - EIOERROR
- 發生非可回復I/O錯誤。
- EIORECERR
- 發生可回復I/O錯誤。
範例
此範例從資料串流取得一行輸入。 此範例讀取的字元數不超過 MAX_LEN-1 個字元,或最多為串流中的換行字元。
#include <stdio.h>
#define MAX_LEN 100
int main(void)
{
FILE *stream;
char line[MAX_LEN], *result;
stream = fopen("mylib/myfile","rb");
if ((result = fgets(line,MAX_LEN,stream)) != NULL)
printf("The string is %s\n", result);
if (fclose(stream))
perror("fclose error");
}