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");
}

相關資訊