c/c++语言开发共享在c中将数据插入文件

我需要在现有文件中的 45 字节之前添加一个字符串。 我尝试使用fseek ,如下所示。

 int main() { FILE *fp; char str[] = "test"; fp = fopen(FILEPATH,"a"); fseek(fp,-45, SEEK_END); fprintf(fp,"%s",str); fclose(fp); return(0); } 

我期望这段代码会在EOF的 45 字符之前添加“test”,相反,它只是将“test”附加到EOF。

请帮我找到解决方案。

这是我之前的问题的延续
将项添加到c中最后一行之前的文件中

    使用模式r +(如果已存在)或+(如果它不存在并且您想要创建它)打开它。 由于你在文件结束之前寻找45个字节,我假设它已经存在。

     fp = fopen(FILEPATH,"r+"); 

    你的其余代码很好。 另请注意,这不会插入文本,但会覆盖文件中当前位置的任何内容。

    即,如果您的文件看起来像这样:

     xxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx 

    然后运行此代码后,它将如下所示:

     xxxxxxxtestxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx 

    如果你真的想要插入而不是覆盖,那么你需要将SEEK_END-45到EOF的所有文本读入内存,编写测试然后再写回来

    如果您计划在任意位置书写,请不要将其作为附加( a )打开; 它会强制所有写入到文件末尾。 您可以使用r+在任何地方读取或写入。

    要避免特定于平台的配置,请始终在fopen()调用中明确指出二进制或文本模式。

    如果您将代码移植一天,这将为您节省数小时的绝望。

    需要了解更多c/c++开发分享在c中将数据插入文件,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!

      以上就是c/c++开发分享在c中将数据插入文件相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/979289.html

      (0)
      上一篇 2021年12月12日
      下一篇 2021年12月12日

      精彩推荐