Tag: 附加

如果在“a + b”模式下打开文件指针,fseek()会将文件指针移动到文件的开头吗?

我希望使用“a + b”模式打开一个文件,即如果它不存在则会自动创建,但如果是,我不想覆盖它。 我希望能够读取和写入该文件。 该文件是二进制文件,我想在其中保存特定struct记录。 所以我想对我想要的记录执行fseek() ,然后使用fwrite()保存记录。 代码如下所示( MyRecord是struct的typedef ,而FILENAME是文件名的#define ): int saveRecord(MyRecord *pRecord, int pos) { FILE* file = fopen(FILENAME, “a+b”); if (file == NULL) { printf(“Unable to open file %s\n”, FILENAME); return 0; } fseek(file, pos * sizeof(MyRecord), SEEK_SET); fwrite(pRecord, sizeof(MyRecord), 1, file); fclose(file); return 1; } 但是这个代码只是将记录追加到文件的末尾,即使我将pos设置为0.为什么SEEK_SET模式下SEEK_SET不能使用fseek() ? 我知道我可以简单地用“r + b”打开它,如果它失败了用“wb”打开它,但我想知道为什么这不起作用以及为什么用SEEK_SET fseek()将文件指针留在最后。 […]