我想知道是否可以使用frwite
. 让我更准确地说,我打开一个文件,fopen
然后我用 write 向它写入一些数据。就在关闭文件之前,我想写一些关于文件内容的摘要。我认为放置此摘要的最佳位置是在文件的开头。因此,当我稍后打开文件时,我可以先阅读摘要,然后再阅读数据。
实际上,我把摘要放在哪里并不重要,只要我在打开文件时可以先阅读它。
如果您询问是否可以使用fwrite()
,putc()
等fprintf()
在非空文件的开头插入信息,答案是否定的,您不能这样做。
您可以覆盖数据或附加数据。
如果要插入,则需要检查您的操作系统 API 以查看是否有特殊功能,如果没有,则需要创建另一个文件,将摘要写入其中,然后写入原始内容文件。另一种选择是手动移动数据以在文件开头释放足够的空间,以便在此处写入摘要。
如果您真的需要,您可以向后阅读文本文件。
无法在文件之前插入数据(不重写整个文件)。
可以在文件中的任何位置覆盖某些字节。为了实现您的需求,原始文件必须保留一些字节(可能在开始时)以供以后覆盖。
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);