c++关于fwrite函数的疑问

    int change = 0;   
            char* not_exist = int_to_char(change);
            fseek(fp[hash], temp_offset, SEEK_SET);
            fwrite(not_exist, sizeof(char), 4, fp[hash]);  
            fclose(fp[hash]);

现在fseek找到了正确的偏移量,但fwrite并没有把原来的数据覆盖掉,但是文件字节数的确增加了。

这个主要是打开方式的设定,a+是添加,w+会清空原来内容