在追加模式下打开文件时,如何重新定位文件指针?

时间:2010-10-27 20:05:52

标签: c fopen

我正在尝试将一些数据插入文件的中间。我已在附加模式下打开文件:

file = fopen(msg->header.filename, "ab");
然后我尝试在文件中寻找所需的偏移量:

fseek(file, msg->header.offset, SEEK_SET);

然而,当我尝试fwrite时:

int bytesWritten = fwrite(msg->message, 1, msg->header.length, file);

所有数据都写入文件末尾而不是文件中间。

这是因为我正在使用追加模式吗?我会在写模式下打开,但我需要保留文件中的现有内容。

1 个答案:

答案 0 :(得分:6)

查看“a”(APPEND)模式的ANSI C函数fopen的规范: 所有写操作都发生在文件末尾。 你的fseek会被忽略。