C++ 下图所示代码和文件内容,请详细解释执行后的输出内容是什么?

 我来答
White_MouseYBZ
2020-09-01 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6636万
展开全部

如果文件内容最后一个字符u后而是存入了'\n',则输出结果如下图1;如果u后面什么都没有,则输出如图2。

原因:

当最后一个字符后面有'\n'时——

  1. seekg(5L,ios::beg)把读文件指针从第一个字符B开始向文件尾方向移动5个字符,刚好指向5,所以读出5并输出。这里要注意,文件中的5前只能是一个空格,否则就读出了空格而不是5。

  2. seekg(-10L,ios::end)把读文件指针从文件最后一个字符后面(即文件结束处)向文件头方向移动10个字符,刚好指向第一个r,所以读出来是r并输出。这里要注意两点:一是ios::end是指从文件最后一个字符后面起算,即文件的最后一个字符是“倒数第一个”字符;二是'\n'存入文件时被换成了FL(换行)和CR(回车)两个字符。所以若文件最后存入了'\n',实际上最后一个有效字符已经是第三个字符了。

  3. seekg(L,ios::cur)把读文件指针从当前位置向后移3个字符而指向了t,所以读取t并输出。这里要注意的是文件无论读或写时,每读/写一个字符都自动将文件指向文件尾方向移动一个字符位置。

当最后一个字符后面没有'\n'时,u就文件的最后一个字符,用上面的解释自己理解,看是不是图2的结果。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式