C 如何从文件中读取最后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, "

在这里,我开发了用于CRC16文件验证的程序

在这里,我计算了文件的CRC 16,并在文件末尾写入这个CRC值。crc值数据类型是无符号短的,因此它需要2个字节

代码就在这里

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;相反,没有从文件中删除字节的标准方法。您要么复制文件减去不需要的数据,要么使用一些特定于操作系统的功能。