fgets总是在文件的第一行读取3个垃圾字符

问题描述 投票:0回答:1

我正在读取具有以下格式的文本文件:

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

[使用这样的fget时:

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

它总是在第一行中得到三个垃圾字符。我尝试使用纯文本编辑器删除第一行,只是为了测试文本之前没有像不可打印字符之类的东西,没有结果。他们总是相同的三个字符。当被fgets读取时,第一行在Visual Studio调试控制台中如下所示:

DUMMY,0000000000000100100000000000000000

当使用printf在终端上显示时,它看起来像这样:

DUMMY,0000000000000100100000000000000000

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

JOHNDOE,0000000000000010000000100000000100

有趣的是,如果我在输入文件中将空行作为第一行,则一切似乎正常。

c file input ascii fgets
1个回答
0
投票
Byte order mark @Some programmer dude

DUMMY,0000000000000100100000000000000000 ^^^ 而不是另存为UTF-8,而是将文本文件另存为原始ASCII文件。

© www.soinside.com 2019 - 2024. All rights reserved.