C 如何从文件中读取最后2个字节,并在读取后将其删除
在这里,我开发了用于CRC16文件验证的程序 在这里,我计算了文件的CRC 16,并在文件末尾写入这个CRC值。crc值数据类型是无符号短的,因此它需要2个字节 代码就在这里C 如何从文件中读取最后2个字节,并在读取后将其删除,c,file,C,File,在这里,我开发了用于CRC16文件验证的程序 在这里,我计算了文件的CRC 16,并在文件末尾写入这个CRC值。crc值数据类型是无符号短的,因此它需要2个字节 代码就在这里 void appendCRCtoFile(const char* filePath, unsigned short result) { FILE *readFile; //open a file for Reading readFile = fopen(filePath, "
void appendCRCtoFile(const char* filePath, unsigned short result) {
FILE *readFile;
//open a file for Reading
readFile = fopen(filePath, "ab");
fseek(readFile, SEEK_END, SEEK_SET);
const unsigned char check_bytes[2] = { result >> 8, result & 255 };
const size_t wrote = fwrite(check_bytes, 1, sizeof(check_bytes), readFile);
if (wrote == 2) {
printf("succesfull wrote 2 bytes\n");
} else {
printf("Failed to wrote 2 bytes\n");
}
fclose(readFile);
}
现在我必须从文件中读取最后两个字节,并在读取后删除它们,然后再次计算CRC。因此,我如何读取最后两个字节并在读取后删除它们。如果我理解正确,您希望将文件倒回两个字节
fseek(readFile, -2, SEEK_CUR);
谢谢你的回复,它不工作。seekreadfile,SEEK_END,SEEK_SET;这可能是错误的。使用fseekreadFile,0,SEEK_END;相反,没有从文件中删除字节的标准方法。您要么复制文件减去不需要的数据,要么使用一些特定于操作系统的功能。