我试图最终确定这个奇怪的事情,在文件中查找特定样式的序列,检查它是否是它正在寻找的序列;然后,在确定之后,它会回顾并将某些值更改为所需的值。
它已经完成了所有这些......我的问题是以下警告:
当指定
"r+"
,"w+"
或"a+"
访问类型时,允许读取和写入(该文件称为“更新”)。但是,当您从读取切换到写入时,输入操作必须遇到EOF
标记。如果没有EOF
,则必须使用对文件定位功能的干预调用。文件定位功能为fsetpos
,fseek
和rewind
。当您从写入切换到阅读时,您必须使用fflush
或文件定位功能进行干预。
这个警告究竟试图说什么?顺便说一句,我正在对文件定位功能进行干预调用,当我从阅读切换到写入时,使用fsetpos
寻找我已存储的位置。
如果我没有怎么办?
写作/阅读是否继续从位置指示器的最后位置开始?
使用代码示例:
...
getc( somefilepointer );
fprintf_s( somefilepointer, "%X", 28 );
...
和
...
getc( somefilepointer );
fgetpos( somefilepointer, &an_fpos_t );
fsetpos( somefilepointer, &an_fpos_t );
fprintf_s( somefilepointer, "%X", 28 );
...
这两个不一样吗?
答案 0 :(得分:0)
我同意警告并不完全清楚。但是,您需要小心,因为它可能无法达到预期效果。来自http://www.cplusplus.com/reference/cstdio/fopen/
“append / update:打开一个文件进行更新(包括输入和输出),在文件末尾写入数据的所有输出操作。重新定位操作(fseek,fsetpos,rewind)会影响下一个输入操作但输出操作会将位置移回文件末尾。如果文件不存在,则创建该文件。“
因此,如果使用 a + 打开文件,则可以打印到文件的末尾。