[英]How to read a non-text file containing EOF characters in C?
我正在嘗試使用簡單的while
循環遍歷文件的所有字節,如下所示:
char c = fgetc(InputFile);
while (c != EOF)
{
doStuff(c)
c = fgetc(InputFile);
}
但是,在處理非文本文件時,我發現文件中的某些字節(不是最后一個)包含值 255,因此注冊為 EOF 並且 while 循環過早結束。
我如何解決這個問題並遍歷所有字節?
如評論中所述,您應該將fgetc
返回的值分配給int
變量,而不是char
。 這樣,您將能夠區分具有十六進制值0xFF
的成功輸入字符( fgetc
將返回 255)和文件結束條件( fgetc
將返回EOF
,即 -1)。
從fgetc
的cppreference 頁面:
成功時,將獲得的字符作為轉換為 int 的無符號字符返回。 失敗時,返回 EOF。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.