我有一个小代码块,应该将文本附加到文件的beg.但是它仍然只会添加到文件的末尾.我认为倒带将指针设置到文件的前面,因此当我使用fprintf添加文本时,它应该添加到前面.我怎么能改变这个?
fp = fopen("Data.txt", "a");
rewind(fp);
fprintf(fp, "%s\n", text);
fclose(fp);
Run Code Online (Sandbox Code Playgroud)
Text是要添加到文件前面的char数组
Ste*_*sop 13
1)不要在追加模式下打开.
在追加模式下打开时,无论搜索位置如何,所有写入都将转到文件末尾.
http://www.opengroup.org/onlinepubs/009695399/functions/fopen.html
打开带有追加模式的文件(作为mode参数中的第一个字符)将导致对文件的所有后续写入强制转换为当前的文件结束,无论是否对fseek()进行中间调用.
2)没有"a"的开场仍然不会做你想要的.使用ANSI/POSIX文件操作插入文件是不可能的,因为考虑到大多数文件系统存储数据的方式,插入不是一个简单的操作.
您需要打开一个新文件,编写新数据,然后追加旧文件,否则您需要在块中向前移动数据.对于大文件来说,这两个选项都是非常低效的,与最后添加相比,如果您需要程序或机器能够意外死亡而不损坏数据,更不用说容易出错.因此,如果这是一个日志文件或类似文件,则可能值得重新设计,以便您可以将新数据写入结尾,然后在从日志准备报告时将其全部反转.
| 归档时间: |
|
| 查看次数: |
3187 次 |
| 最近记录: |