我正在尝试检测文件中的最后一个字节是否是 control-z (MS-DOS 原始文件字节结尾 - 0x1A),但我没有任何成功。我正在使用
fseek(filePointer,-1,SEEK_END);
隔离最后一个字节,然后我正在使用
fread(buffer, sizeof(buffer[0]), sizeof(custom_char), filePointer);
尝试读取最后一个字节。
当我尝试读取该字节时,我基本上得到了垃圾,我想知道 fread 是否默认忽略了 0x1A 字节,或者人们过去在执行此操作时是否遇到过任何其他古怪的行为。
当前的逻辑出现故障,正在尝试读取最后一个字节并考虑如果 fread 返回 0(fread 应该返回读取的元素数,对吗?)找到的文件标记的结尾:
if(fread(buffer, sizeof(buffer[0]), sizeof(custom_char), filePointer) == 0)
{
// strip off the last byte
}
编辑:我应该补充一点,我在调用 fopen 之后出现的问题,BOM 被写入,并且 BOM 的第 3 个字节被错误地认为是文件标记的 0xA1 结尾并被剥离。