关于C++中如何使用fwrite将数据写到文件指定位置

摘自:https://bbs.csdn.net/topics/300091887?list=1781994

1、会不会覆盖取决于你执行fwrite()时文件指针所指向的位置,如果文件指针后有内容,就会覆盖;如果没有,就不会覆盖.另外通过fseek()函数可以控制文件指针的位置:

函数名: fseek
  功 能: 重定位流上的文件指针
  用 法: int fseek(FILE *stream, long offset, int fromwhere);
  描 述: 函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere为基准,偏移offset个字节的位置。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置。
  返回值: 成功,返回0,否则返回其他值。

int fseek( FILE *stream, long offset, int origin );
  第一个参数stream为文件指针
  第二个参数offset为偏移量,整数表示正向偏移,负数表示负向偏移
  第三个参数origin设定从文件的哪里开始偏移,可能取值为:SEEK_CUR、 SEEK_END 或 SEEK_SET
  SEEK_CUR: 当前位置
  SEEK_END: 文件结尾
  SEEK_SET: 文件开头
  其中SEEK_CUR,SEEK_END和SEEK_SET依次为1,2和0

2、size_t fwrite(
const void *buffer,
size_t size,
size_t count,
FILE *stream
);
The fwrite function writes up to count items, of size length each, from buffer to the output stream. The file pointer associated with stream (if there is one) is incremented by the number of bytes actually written.
也就是说fwrite只是规定最多输出count次(每次size字节的内容)到stream的当前指针中,而当前指针到底是在哪里,是在文件的开头还是中间还是文件的末尾则可以通过fseek指定,fwrite并没有具体指定从哪里开始写数据。

3、关键是你open的方式是什么?默认的open完,fwrite会覆盖,加了append模式就直接定位到文件末尾。
类似于Unix系统的lseek.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值