fopen、fread、fwrite使用的一些细节

今天遇到的是一个fwrite写入数据失败的问题,这个问题已经遇到好几次了,在此特别记录一下。
问题是出在fopen的打开权限上。重温一下fopen的打开权限
r:以只读方式打开文件,这意味着你对这个文件指针只能是fread操作,文件指针指向开头。
r+:以读写方式打开文件。文件指向开头
注意:以上方式,文件必须存在,不然报错。
w:以只写的方式打开文件,如果文件存在,则将文件中的内容清除掉。文件指针指向开头
w+:以读写的方式打开文件,文件存在,内容截断,
注意:以上方式,文件不存在则创建
a:以追加的方式打开文件,没有则创建,指针指向文件末尾。只能write
a+:以追加的方式打开文件,但是能够随意的fread和fwite

b:以二进制的方式打开文件,这个常用在跨文件系统的时候使用,不加这个参数会将一些特别的字符进行改变,比如windows和linux的换行符的区别,加这个参数可以避免特殊字符的强制转换。

说一下fopen、fread、fwrite之间的配合使用。
一定程度上,从fopen函数开始就决定了后面两个函数的使用规则。
1、当fopen使用wb+时,使用fread就一定会读不到数据,只能先fwrite之后再fread。当我们只想更新文件里的某些信息时,这种操作就显得很傻逼。
2、当fopen使用rb+时,这中操作能将文件中的数据读出来,但是fwrite的时候又会出现问题,因为文件的内容没用被清除掉,即使使用fseek定位到文件开头,也只是覆盖文件内容而已。但文件中原本的内容长度大于要写的内容长度时,后面总是会又多余数据。
所以只能先rb+把数据读数来,fclose文件,更新部分数据,再wb+,再fwrite写入文件,最后fclose。只能说有点麻烦而已。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值