簡體   English   中英

如何讀取 C 中包含 EOF 字符的非文本文件?

[英]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)。

fgetccppreference 頁面

成功時,將獲得的字符作為轉換為 int 的無符號字符返回。 失敗時,返回 EOF。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM