我正在将结构保存到.dat文件中。让我们假设我必须编辑一个特定的结构,我将如何进行?我做了以下事情:
ptFile = fopen("funcionarios.dat", "ab+");
fseek(ptFile, index*sizeof(strFunc), SEEK_SET); //places the pointer at the struct I want
fwrite(&newStruct, sizeof(strFunc), 1, ptFile); //adds the new struct
因此,如您所见,我想用newStruct更新我的文件。
fwrite函数返回1,但它不会替换我想要的行(也不会替换邻居行,以防我使用错过的索引),并且它不会向文件添加新结构。它什么都不做!
有什么想法吗?
我通过读取所有结构,使用newStruct替换index-struct并使用所有结构编写文件来完成它,但我正在寻找更好的方法来做到这一点。
提前致谢。
答案 0 :(得分:4)
fopen(.., "ab+")
要求追加模式:
a+ Open for reading and appending (writing at end of
file). The file is created if it does not exist. The
initial file position for reading is at the beginning
of the file, but output is always appended to the end
of the file.
你可能需要r+
模式,这自相矛盾也意味着写:
r+ Open for reading and writing. The stream is
positioned at the beginning of the file.