fopen()打开文件fwrite()修改原文件的问题!!!

在编程中使用fopen()和fwrite()处理文件时遇到问题,原本打算修改原文件,但发现使用'wb+'模式会导致文件被覆盖。尝试了'r+'、'w+'和'ab+'模式,最终发现'rb+'模式能在不丢失原有数据的情况下正确修改文件。'w+'和'r+'模式的区别在于,'w+'会清空文件内容,而'r+'则不会,但在读写过程中要注意文件指针的位置。
摘要由CSDN通过智能技术生成

说是小问题,实际上还是给我带来了很大麻烦,编程中用fwrite()将一结构写入文件,修改文件时用fopen()打开文件

fopen()原型FILE * fopen(const char * path,const char * mode),其中第三个参数有r,r+,w,w+,a,a+(二进制文件用加b)!我本意是修改原文件,所以用fseek()将文件指针移到我要修改的位置,然后用fwrite()将内容重新写入,学生信息的文件存储为“stu.dat”打开文件的地方最开始这样写的:

                   FILE  *fp;

                   fp=fopen("stu.dat","wb+");......

开始知道wb+会覆盖原文件,但是指针移动到要写的位置应该不会,而且上网问过一些人也都是这么说的,结果是每次文件都被重新写入,以前的内容都会被新的覆盖,后来改为ab+结果

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值