我试图弄清楚如何在文件的开头(标题)写一个新的文本行.我知道我可以打开文件,或者寻找文件的开头,但如果我用它写,它会覆盖那里的内容.我是否必须写一个新文件然后逐行写入其他数据,还是有更好的方法?
示例文件:
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
您将不得不重写整个文件,但这并不一定意味着您必须逐行读取和写入原始数据.按行读取相对较慢,因此如果文件足够小以适合内存,请在一个大块(或大块)中读取它,然后在写入新数据后将其写回.
您将不得不重写整个文件,但这并不一定意味着您必须逐行读取和写入原始数据.按行读取相对较慢,因此如果文件足够小以适合内存,请在一个大块(或大块)中读取它,然后在写入新数据后将其写回.