编程语言
首页 > 编程语言> > 关于C++中如何使用fwrite将数据写到文件指定位置

关于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.

标签:文件,stream,fwrite,指定,C++,size,SEEK,指针
来源: https://blog.csdn.net/q15615725386/article/details/122595841