gpt4 book ai didi

c - 从文件中删除字节 - c

转载 作者:太空宇宙 更新时间:2023-11-04 01:33:01 27 4
gpt4 key购买 nike

如何从文件中删除从 i 到 i 的字节。

示例:“今天我和我的室友去参加一个聚会”;如果 i = 3,我想删除第 3 个字节、第 6 个、第 9 个...等等我尝试使用 lseek 和 fgets,但我不知道如何完成整个过程。

我尝试过的:

FILE* f = fopen(name_file,"r");
lseek(f,0,SEEK_SET);
while(fgets(lune,255,f) != NULL){
lseek(f,i,SEEK_SET);
}

我没有做太多,因为我不知道该做什么。也许你可以帮我一些答案和提示。

最佳答案

如果删除是指从文件内容(文件中间)中物理删除字节,则不能这样做。您必须打开另一个文件并有选择地将要保留的内容复制到其中。所以实现方式如下:

  • open() 用于读取的源文件(我假设是低级 I/O,但 stdlib f* 函数的工作方式类似)
  • open() 写入目标文件
  • lseek() 到正确的位置
  • read() 保留的部分
  • write() 到目标文件
  • 重复最后 3 个操作,直到完成。

请注意,您正在 FILE* 上调用 lseek(),这不是正确的方法(检查您的编译器警告。您应该使用 fseek()

另一种方法是 mmap() 文件并读取其中的一部分,就好像它是一个数组一样。

最后,如果您的文件是一个简单的字符串,最简单的方法可能是在内存中读取它并将正确的部分复制到输出文件中。

关于c - 从文件中删除字节 - c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19714717/

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