gpt4 book ai didi

c - 在 C 中截断文件开头的最佳方法是什么?

转载 作者:太空狗 更新时间:2023-10-29 17:21:41 26 4
gpt4 key购买 nike

有很多类似的问题,但在谷歌搜索了相当多之后没有一个能具体回答这个问题。开始了:

假设我们有一个文件(可以是二进制文件,也可以更大):

abcdefghijklmnopqrztuvwxyz

在 C 中将此文件的最右侧部分“移动”到左侧的最佳方法是什么,截断文件的开头..因此,例如,“前截断”7 个字节将更改磁盘上的文件成为:

hijklmnopqrztuvwxyz

我必须避免使用临时文件,并且不希望使用大缓冲区将整个文件读入内存。我想到的一种可能的方法是使用带“rb+”标志的fopen,并不断地来回读取和写入fseek,将字节从偏移量开始复制到开头,然后setEndOfFile 在末尾截断。这似乎是很多寻求(可能效率低下)。

另一种方法是 fopen 同一个文件两次,然后将 fgetc 和 fputc 与各自的文件指针一起使用。这可能吗?

如果还有其他方法,我很乐意阅读所有这些方法。

最佳答案

你可以 mmap将文件放入内存,然后 memmove 内容。您必须单独截断文件。

关于c - 在 C 中截断文件开头的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8453046/

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