c语言中w w+ 的一点疑问

来源:百度知道 编辑:UC知道 时间:2024/05/09 16:46:08
就是w不是说如果原来文件有数据,是清空原来数据再写入吗?那么wb+也应该是这样。为什么这道题不是
#include <stdio.h>
main()
{ FILE *pf;
char *s1="China",*s2="Beijing";
pf=fopen("abc.dat","wb+");
fwrite(s2,7,l,pf);
rewind(pf); /*文件位置指针回到文件开头*/
fwrite(s1,5,1,pf);
fclose(pf);

答案是Chinang,为什么不就是china呢,不是要清除源文件内容吗?

是清除,不过是在打开文件的时候清除,就是说
pf=fopen("abc.dat","wb+");
这时候把文件清空了
fwrite(s2,7,l,pf);
这一句,把Beijing写进了文件
rewind(pf); /*文件位置指针回到文件开头*/
这一句,只是把写位置放到了文件头,文件中的内容还是Beijing

然后,fwrite(s1,5,1,pf);
把China写了进去,把前面的5个字符给覆盖了,所以变成了Chinang

不明白hi我,pur_e