c语言文件读写覆盖的问题

c语言文件读写覆盖的问题,第1张

位置是共用的

fscanf移动了rp的当前位置

所以在fprintf(rp,"%d",j)

之前要使用

fseek(rp, 0, SEEK_SET)

把位置移到前面

你需要解决两个问题。

1、待更改的文件应该是以“块”状形式写入的,比如fwrite((void *)student stu,sizeof(student),1L,fp),只有这样才能准确定位待更改“块”的位置。而以fprintf()写入的文件,可能由于数据的不同,每个结构数据占用的空间就不同,即使你能准确定位,但写入新数据后,若长度短了,剩余的空间可能造成混乱,若长度长了,可能造成”覆盖“。

2、打开文件同时用于”读/写“时,打开的格式是"r+"或”w+“。

另外,还需要搞清楚文件读写指针的使用特点,前两个问题解决后再讨论。

你原来的文件是二进制文件的话,才可以用

"b"

if((da

=

fopen("data.txt",

"ab+"))

==

NULL)

二进制文件用

fseek

找到读写位置,用fwrite来写,不用fprintf。

用二进制文件你可以一个结构一个结构地读写。

如果你原来的文件是文本文件的话,不可以用

"b"


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11511645.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存