fgetc ()- 讀取字元
格式
#include <stdio.h>
int fgetc(FILE *stream);語言層次
ANSI
安全執行緒
是
說明
fgetc() 函數會從現行位置的輸入 串流 中讀取單一無正負號字元,並增加關聯檔案指標 (如果有的話) ,使其指向下一個字元。
回覆值
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
************************************************************************/