fgetc ()- 讀取字元

格式

#include <stdio.h>
int fgetc(FILE *stream);

語言層次

ANSI

安全執行緒

說明

fgetc() 函數會從現行位置的輸入 串流 中讀取單一無正負號字元,並增加關聯檔案指標 (如果有的話) ,使其指向下一個字元。
附註: fgetc() 函數與 getc()相同,但一律定義為函數呼叫; 它絕不會被巨集取代。

回覆值

fgetc() 函數會傳回以整數讀取的字元。 EOF 回覆值指出錯誤或檔案結尾狀況。 使用 feof()ferror() 函數來判斷 EOF 值是否指出錯誤或檔案結尾。

錯誤碼的值可以設為:
Value
意義
EBADF
檔案指標或描述子無效。
ECONVERT
發生轉換錯誤。
ENOTREAD
未開啟檔案進行讀取作業。
GETANDPUT
在寫入作業之後發生不容許的讀取作業。
埃雷西奧
開啟檔案以進行記錄 I/O。
ESTDIN
無法開啟 stdin
EIOERROR
發生非可回復I/O錯誤。
EIORECERR
發生可回復I/O錯誤。

type=record開啟的檔案不支援 fgetc() 函數。

範例

此範例從串流收集一行輸入。
#include <stdio.h>
 
#define  MAX_LEN  80
 
int main(void)
{
   FILE *stream;
   char buffer[MAX_LEN + 1];
   int i, ch;
 
   stream = fopen("mylib/myfile","r");
 
   for (i = 0; (i < (sizeof(buffer)-1) &&
         ((ch = fgetc(stream)) != EOF) && (ch != '\n')); i++)
      buffer[i] = ch;
 
   buffer[i] = '\0';
 
   if (fclose(stream))
      perror("fclose error");
 
   printf("line: %s\n", buffer);
}
 
 /***********************************************************************
      If FILENAME contains:  one two three
      The output should be:
      line: one two three
   ************************************************************************/

相關資訊