我想打开一个文件进行写作和阅读,但在我读完之后,我无法写信:
f_prefs = fopen(prefs_path, "r+");
while (fscanf(f_prefs, "%[^\n]\n", line) == 1)
{
... do some stuff ...
fprintf(f_prefs, "test"); // doesn't work
...
}
有什么想法吗?
答案 0 :(得分:4)
每个开关之间必须有一个文件定位操作 - 从读取到写入或从写入到读取。如有疑问,请使用fseek(fp, 0, SEEK_CUR);
,它从当前位置寻找零字节。请注意,循环中需要两个fseek()
个操作!
以更新模式打开文件时('+'作为第二个或第三个字符) 在上面的模式参数值列表中,输入和输出都可以在上面执行 相关流。但是,如果没有输入,输出不应直接输入 干预调用fflush函数或文件定位函数(fseek, fsetpos,或倒带),输入不应该直接跟随输出没有 干预调用文件定位功能,除非输入操作遇到结束 文件。