我一直在查看
fopen
和ifstream
的文档,但我找不到的是在打开文件后是否需要寻找文件的开头。我认为我可以假设不需要这样做,并且我所做的实验支持这个假设,但我觉得最好还是确认一下。fstream
对象,它取决于 openmode
(默认为 in
的 ifstream
)。而对于标准 I/O 则取决于传递给 fopen
的模式参数。对于以"r"
/ in
模式打开的文件,答案是否定的,您不需要寻找开头。显然,在只读文件中从其他任何地方开始都没有意义。
不会,初始文件位置指针将定位在文件开头。
根据7.21.3 Files,(draft) C11标准的第1段(我加粗):
通过打开文件(可能涉及创建新文件),将流与外部文件(可以是物理设备)相关联。如果创建现有文件,则必要时会丢弃其以前的内容。如果文件支持定位请求(例如磁盘文件,而不是终端),则与流相关联的文件位置指示器将定位在文件的开头(字符号零),除非使用追加模式打开文件,在这种情况下,实现定义文件位置指示器最初定位于文件的开头还是结尾。文件位置指示器由后续读取、写入和定位请求维护,以促进对文件的有序进度。
请注意,如果以追加模式打开文件,则初始位置是实现定义的。
unless the file is opened with append mode in which case it is implementation-defined whether the file position indicator is initially positioned at the beginning or the end of the file.
- Martin