[英]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
有趣的是,如果我在輸入文件中放一個空行作為第一個,一切似乎都很好。
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.