C++ 下图所示代码和文件内容,请详细解释执行后的输出内容是什么?
展开全部
如果文件内容最后一个字符u后而是存入了'\n',则输出结果如下图1;如果u后面什么都没有,则输出如图2。
原因:
当最后一个字符后面有'\n'时——
seekg(5L,ios::beg)把读文件指针从第一个字符B开始向文件尾方向移动5个字符,刚好指向5,所以读出5并输出。这里要注意,文件中的5前只能是一个空格,否则就读出了空格而不是5。
seekg(-10L,ios::end)把读文件指针从文件最后一个字符后面(即文件结束处)向文件头方向移动10个字符,刚好指向第一个r,所以读出来是r并输出。这里要注意两点:一是ios::end是指从文件最后一个字符后面起算,即文件的最后一个字符是“倒数第一个”字符;二是'\n'存入文件时被换成了FL(换行)和CR(回车)两个字符。所以若文件最后存入了'\n',实际上最后一个有效字符已经是第三个字符了。
seekg(L,ios::cur)把读文件指针从当前位置向后移3个字符而指向了t,所以读取t并输出。这里要注意的是文件无论读或写时,每读/写一个字符都自动将文件指向文件尾方向移动一个字符位置。
当最后一个字符后面没有'\n'时,u就文件的最后一个字符,用上面的解释自己理解,看是不是图2的结果。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询