在C中将3个字节前置到二进制文件的开头有什么简短的方法?

时间:2012-04-24 22:39:38

标签: c

我所知道的直接方法是创建一个新文件,将三个字节写入其中,然后将原始文件读入内存(循环中)并将其写入新文件。

是否有更快的方法允许跳过创建新文件,或者跳过将原始文件读入内存并再次写回来?

3 个答案:

答案 0 :(得分:1)

遗憾的是,没有办法(使用POSIX或标准libc文件API)在现有文件中插入或删除一系列字节。

答案 1 :(得分:1)

这与文件系统有关;没有很多通用的文件系统API可以提供预先添加数据的快捷方式,因此通常只有一种直接的方式。

您可以使用适合您的平台的某种形式的内存映射I / O,但这会将另一组问题换成一组(例如,您可以将整个文件映射到您的地址空间,还是您被迫将其分解成块?)。

答案 2 :(得分:0)

您可以将文件打开为读/写,读取前4KB,向后搜索4KB,写入三个字节,写入(4KB-3)字节,然后重复该过程直到到达文件末尾。