簡體   English   中英

fgets 總是在文件的第一行讀取 3 個垃圾字符

[英]fgets always reads 3 junk chars at the first line of a file

我正在閱讀這種格式的文本文件:

DUMMY,0000000000000100100000000000000000
JOHNDOE,0000000000000010000000100000000100
FOO,0000000000000000000000000100000000
BAR,1000000100000000000000000000000000

像這樣使用 fgets 時:

while (fgets(line, linelength, stream) != NULL) { 
...
}

它總是在第一行得到三個垃圾字符。 我嘗試用純文本編輯器刪除第一行,只是為了測試文本之前沒有類似不可打印的字符,但沒有結果。 它們總是相同的三個字符。 第一行,當 fgets 讀取時,在 Visual Studio 調試控制台中如下所示:

DUMMY,0000000000000100100000000000000000

當使用 printf 在終端上顯示時,它看起來像這樣:

DUMMY,0000000000000100100000000000000000

如上所述,如果我刪除輸入文件的第一行,那么下一行也有相同的字符:

JOHNDOE,0000000000000010000000100000000100

有趣的是,如果我在輸入文件中放一個空行作為第一個,一切似乎都很好。

字節順序標記@Some程序員老兄

DUMMY,0000000000000100100000000000000000
^^^

不要將文件編輯/保存為UTF-8 ,而是將文本文件保存為原始 ASCII 文件。

其他可能性涉及使用特定於實現的fopen() - 但是一些 OP 代碼將有助於探索這一點。

也可以看看
如何在 C 中讀取/寫入 UTF8 文本文件? ,
C 檢查 x 是否在文件開頭時如何跳過 BOM
是否可以防止將 BOM 添加到 output UTF-8 文件? (視覺工作室 2005)

暫無
暫無

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

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