当前位置:  开发笔记 > 编程语言 > 正文

如何在不覆盖任何数据的情况下在文件开头添加新行?

如何解决《如何在不覆盖任何数据的情况下在文件开头添加新行?》经验,为你挑选了1个好方法。

我试图弄清楚如何在文件的开头(标题)写一个新的文本行.我知道我可以打开文件,或者寻找文件的开头,但如果我用它写,它会覆盖那里的内容.我是否必须写一个新文件然后逐行写入其他数据,还是有更好的方法?

示例文件:

1, 01/01/09, somedata, foo, bar
2, 01/02/09, somedata, foo, bar
3, 01/03/09, somedata, foo, bar

而且我想结束

3, 1-3, 01/04/09
1, 01/01/09, somedata, foo, bar
2, 01/02/09, somedata, foo, bar
3, 01/03/09, somedata, foo, bar

编辑:

这就是我最终做的事情:

FILE *source;
FILE *output;
char buffer[4096];
size_t bytesRead;

memset(buffer, 0, sizeof(buffer);

source = fopen("sourcefile.txt", "r");
output = fopen("output.txt", "w+");

fprintf(output, "my header text\n");

while(!feof(source))
{
  bytesRead = fread(&buffer, 1, sizeof(buffer), source);
  fwrite(&buffer, 1, bytesRead, output);
}

fprintf(output, "my footer text");

fclose(source);
fclose(output);

remove(source);
rename("output.txt", "source.txt");

Bryan Oakley.. 6

您将不得不重写整个文件,但这并不一定意味着您必须逐行读取和写入原始数据.按行读取相对较慢,因此如果文件足够小以适合内存,请在一个大块(或大块)中读取它,然后在写入新数据后将其写回.



1> Bryan Oakley..:

您将不得不重写整个文件,但这并不一定意味着您必须逐行读取和写入原始数据.按行读取相对较慢,因此如果文件足够小以适合内存,请在一个大块(或大块)中读取它,然后在写入新数据后将其写回.

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有