1、 fseek
代码中明明使用了fseek定位到行首。
fseek(p, 0, SEEK_SET);
但是写的内容,仍然添加到文件尾。
最后发现是fopen时,出现问题。
r 打开只读文件,该文件必须存在。
r+ 打开可读写的文件,该文件必须存在。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。
一开始使用的是fp = fopen(ff, "a+");导致fseek无效。
所以改成fp = fopen(ff, "r+");
2、rewind()函数
将读写位置指针重置到文件开头。void rewind(FILE *filepointer);