【C標準庫】詳解feof函數與EOF
創作不易,多多支援!
再說此函數之前,先來說一下EOF是什麼
EOF,為End Of File的縮寫,通常在文本的最後存在此字元表示資料結束。
在C語言中,或更精確地說成C標準函式庫中表示文件結束符。這種以EOF作為文件結束標誌的文件,必須是文本文件。在文本文件中,數據都是以字元的ASCII程式碼值的形式存放。我們知道,ASCII程式碼值的範圍是0~255,不可能出現-1,因此可以用EOF作為文件結束標誌
- 一般結尾都有一個隱藏字元」EOF」,當程式讀取它的時候,就會知道文件已經到達結尾
可以理解為EOF是文本文件的結束標識,
注意:此時的text.txt文件內容為空
相信看到這裡,我們基本了解了EOF!
feof
頭文件:stdio.h
它是什麼?
是檢測流上的文件結束符的函數,如果文件結束,則返回非0值,否則返回0
一般文件操作結束後,需要使用feof來判定是不是到達了文件末尾(eof)而結束的。
聲明:
int feof(FILE *stream);
參數:
stream — 這是指向 FILE 對象的指針,該 FILE 對象標識了流。
返回值:
如果碰到eof而結束返回非0值,否則返回0。
操作實例:
- 注意:此時你的項目工程裡面必須有一個text.txt的文件!
#include<stdio.h>
int main()
{
int ch = 0;
FILE* pf = fopen("text.txt", "r");
if (pf == NULL)
{
perror("open file text.txt");
return 0;
}
while ((ch = fgetc(pf)) != EOF)
{
putc(ch,stdout);
}
printf("\n");
if (ferror(pf))
{
printf("讀取文件:text.txt時發生錯誤\n");
}
else if (feof(pf))
{
printf("已到達文件結束處end of file\n");
}
fclose(pf);
pf = NULL;
return 0;
}
牢記:在文件讀取的過程中,不能用feof函數的返回值直接用來判斷文件的是否結束。而是應用於當文件讀取結束的時候,判斷是讀取失敗而結束,還是遇到文件尾結束!
以上程式碼均在vs2022環境下編譯