C在文件开头fread fwrite

时间:2013-02-26 09:02:16

标签: c fwrite fread

我想知道是否可以使用frwite在文件开头写入数据。让我更准确一点,我使用fopen打开一个文件,然后用write写一些数据给它。在关闭文件之前,我想写一些文件内部的摘要。我想最好把这个摘要放在文件的开头。因此,当我稍后打开文件时,我可以先读取摘要,然后再读取数据。

实际上,我把摘要放在哪里并不重要,只要我在打开文件时可以先阅读它。

2 个答案:

答案 0 :(得分:0)

如果您询问是否可以使用fwrite()putc()fprintf()等在非空文件的开头插入信息,答案是答案不,你做不到。

您可以覆盖数据或附加数据。

如果要插入,则需要检查OS API以查看是否有特殊功能,如果没有,则需要创建另一个文件,将摘要写入其中然后编写内容原始文件。另一种选择是手动移动数据以释放文件开头的足够空间,因此可以在那里写入摘要。

如果你真的需要,你可以read a text file backwards

答案 1 :(得分:0)

无法在文件之前插入数据(不重写整个文件)。

可以覆盖文件中任何一点的某些字节。为了实现您的需求,原始文件必须保留一些字节 - 可能在开头 - 以便以后覆盖。

FILE *f = fopen ("thefile", "r+");  // opens for read and write, positioned at beginning
if (!f)  error_message();
size_t n = fwrite ("newdata", 1, 7, f);  // overwrite first 7 bytes
if (n != 7)  error_message();
fclose (f);