将文本前置到C中的文件

前端之家收集整理的这篇文章主要介绍了将文本前置到C中的文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想使用C向文件(或文件组)添加标准头文件.这些文件可能非常大,因此将它们加载到内存中或将它们复制到临时文件中是个坏主意(我认为).

有没有办法简单地将标头直接添加到每个文件

标题本身非常小,不超过1 KB

解决方法

应该可以在没有临时文件的情况下 – 您可以逐块读取文件,将每个块写回(original_position header_size).第一个块将在header_size处写回,为标题留出空间.

但是,你真的不想这样做.如果中止,它会破坏文件(想一想:磁盘空间不足,其他I / O错误,掉电等等).

因此,您实际上应该使用临时文件 – 将所有内容写入其中,然后将其重命名为原始文件名称(假设您在同一文件系统上创建临时文件,否则您需要复制).

编辑:澄清我的意思,当整个文件适合RAM时的简化解决方案:

>分配与文件大小相同的缓冲区
>打开文件,将其读入缓冲区
> seek(file,header_size)并在此处写入缓冲区
> seek(file,0)写入标题

如果文件很大,您可以分配较小的缓冲区并重复读取/写入,首先读取file_size – buffer_size,然后写入file_size – buffer_size header_size.然后在file_size – 2 * buffer_size处读取下一个块读取,在file_size – 2 * buffer_size header_size处写入,依此类推.

但请允许我再说一遍:如果文件失败,您可能会损坏文件

原文链接:https://www.f2er.com/c/116929.html

猜你在找的C&C++相关文章