gpt4 book ai didi

c - C语言删除文件中的一行

转载 作者:太空狗 更新时间:2023-10-29 16:31:48 25 4
gpt4 key购买 nike

我想根据行的某些部分是否匹配指定的字符串来删除文件中的某些行并在同一文件中插入某些行。有没有一种方法可以在不使用临时文件将内容复制到等等的情况下执行此操作?

最佳答案

问题是,文件(本质上)是磁盘上的字节数组(或任何其他物理基底,但无论如何,字节!),并且“一行”可以占用不同数量的字节;所以要插入或删除行(除非你总是严格地用字节长度完全相同的另一行替换一行)将需要“移动”文件的所有其余部分“向上”或“向下”字节的差异...这可能是一个非常繁重的操作(因为文件的其余部分可能是千兆字节,即使您只是将一行的长度更改为文件开头的 1 个字节)。

因此,此类操作可能非常繁重,因此在任何支持具有可变行长度的文件(C、Python、Java、C++、Ruby 或任何其他此类语言)的语言中,通常都不会将其作为原语提供。当您试图避免的非常简单、足够、快速、安全和合理的技术基本上具有零缺点(因此您为什么要避免它远非显而易见?)。

使用与源文件不同的结果文件,完成后将结果文件 mv 覆盖源文件(如果您在同一文件系统中,则在大多数系统上是原子操作),并且您确实拥有所有可能世界中最好的。

关于c - C语言删除文件中的一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1151713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com