linux c删除文件中指定内容行或指定行

本文探讨了如何使用C语言在Linux系统中删除文件中的指定内容,对比了两种常见方案的优缺点,并提出了一种新的方法,该方法类似于队列操作,通过文件指针实现,避免了临时文件和大量内存的使用。文章提供了详细的实施流程,并附带了代码实现链接。
摘要由CSDN通过智能技术生成

用C语言来操作文件内容还是有点烦的(尤其是删除内容,或者是修改非等长度的内容),没有现成的API调用,只能自己手动写;

网上查了下资料基本就两个方案:

1、增加个临时文件;把源文件内容逐个字节或者逐行读取出来,然后修改或者丢弃,放到临时文件中,当把源文件中所有内容过滤后,再把临时文件全部覆盖回源文件;

2、读取到内存中修改;把整个文件读取到内存中,然后修改,再覆盖回到源文件;


第1种方案,会多一个临时文件,这样不太安全,使用C语言来做这种事,很大一方面就是考虑到安全性;

第2种方案,读取到内存中,这种方法有个缺陷是你不知道源文件大小,如果源文件很大的话,你要分配很大内存;


我们应该怀疑下,为什么 shell 命令可以很方便的删除、修改文件内容,这绝对不会有临时文件产生,也不会占用多大内存,或者可以说占用的内存不会随着文件的大小而改变?


我想了下,有个新方案,或许就是shell命令的原理;(我没有去研究shell命令的删除实现);


新方案是利用文件指针,如下图:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值