把嘎嘎 2021-06-02 11:52 采纳率: 44.1%
浏览 136
已结题

C语言文件io操作,从文件中间写入

有一个txt文件,内容:

123456789

 

现在想将45替换成ab,有办法对这个txt文件直接操作吗?

  • 写回答

3条回答 默认 最新

  • bostonAlen 2021-06-02 15:19
    关注
    如果只想修改文件一部分。
    可以使用函数int fseek( FILE *stream, long offset, int origin );来定位你的文件指针。
    文件指针的位置决定你读写文件的起始位置。
    其中参数origin :表示从哪里开始偏移,值有:
    SEEK_SET: 文件开头
    SEEK_CUR: 当前位置
    SEEK_END: 文件结尾
    参数offset:表示偏移的字节数,正数表示正向偏移,负数表示负向偏移。
    比如
    你先读取文件内容,同时做判断,找到你要改的内容时,调用函数
    fseek(fp,10L,SEEK_CUR);把文件指针移动到离当前指针位置10个字节的地方(我们假设当前位置偏移10个字节就是你要修改的起始位置);
    这样你之后的读写都是从这个位置开始。
    不过要注意的是,你从这位置开始写新的内容,可以覆盖原内容,所以如果新的内容比你想覆盖的内容长的话,会把后面你想保留的内容也覆盖掉。
    这种思路,你想要实现修改指定内容,还需要把修改内容之后的数据也读出来备份,再一起写进去。
    所以最简单,还是直接生成新的文件替换原文件。
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月9日

悬赏问题

  • ¥30 Matlab打开默认名称带有/的光谱数据
  • ¥50 easyExcel模板 动态单元格合并列
  • ¥15 res.rows如何取值使用
  • ¥15 在odoo17开发环境中,怎么实现库存管理系统,或独立模块设计与AGV小车对接?开发方面应如何设计和开发?请详细解释MES或WMS在与AGV小车对接时需完成的设计和开发
  • ¥15 CSP算法实现EEG特征提取,哪一步错了?
  • ¥15 游戏盾如何溯源服务器真实ip?需要30个字。后面的字是凑数的
  • ¥15 vue3前端取消收藏的不会引用collectId
  • ¥15 delphi7 HMAC_SHA256方式加密
  • ¥15 关于#qt#的问题:我想实现qcustomplot完成坐标轴
  • ¥15 下列c语言代码为何输出了多余的空格