C文件读写操作-向文件写入字符串遇到的问题(sizeof与strlen)

4 篇文章 0 订阅

对文件进行追加写操作,将字符数组中的字符串写入文件。每执行程序一次,追加写文件一次。遇到问题如下所述。

代码片段如下:

FILE *fp=NULL;

char tmp[512];

char buf[1024*5]={0};

if((fp=fopen(filename,"a+"))==NULL){//追加读写打开文件
printf("Open data file failed!\n");
exit(0);
}

buf的赋值

fwrite(&buf,sizeof(buf),1,fp);

问题:当利用上述代码每执行一次程序,对文件追加写一次,文件写入结果如下图所示:


出现这个问题是buf缓冲区申请的大,实际数据占用的少,写入文件时没有判断实际数据大小。将buf大小用strlen获取所存字符串的长度,而不是sizeof,sizeof获取的是数组大小

fwrite(&buf,strlen(buf),1,fp);

重新执行程序,查看文件,格式正确。




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值