fseek 写操作定位无效问题

1、 fseek

fseek 写操作定位无效问题_第1张图片

代码中明明使用了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);

你可能感兴趣的:(fopen,fseek)