【发布时间】:2010-08-19 06:03:41
【问题描述】:
我想打开一个文件进行写入和读取,但读取后无法写入:
f_prefs = fopen(prefs_path, "r+");
while (fscanf(f_prefs, "%[^\n]\n", line) == 1)
{
... do some stuff ...
fprintf(f_prefs, "test"); // doesn't work
...
}
有什么想法吗?
【问题讨论】:
我想打开一个文件进行写入和读取,但读取后无法写入:
f_prefs = fopen(prefs_path, "r+");
while (fscanf(f_prefs, "%[^\n]\n", line) == 1)
{
... do some stuff ...
fprintf(f_prefs, "test"); // doesn't work
...
}
有什么想法吗?
【问题讨论】:
在方向上的每个开关之间必须有一个文件定位操作——从读到写或从写到读。如有疑问,请使用fseek(fp, 0, SEEK_CUR);,它从当前位置寻找零字节。请注意,循环中需要两个 fseek() 操作!
当以更新模式打开文件时('+' 作为第二个或第三个字符 以上模式参数值列表),输入和输出都可以在 关联的流。但是,输出不得直接跟在输入后面没有 干预对 fflush 函数或文件定位函数(fseek, fsetpos,或倒带),并且输入不应直接跟在没有输出的情况下 干预对文件定位函数的调用,除非输入操作遇到 end-of- 文件。
【讨论】: