鱼C论坛

 找回密码
 立即注册
查看: 862|回复: 3

[已解决]关于c语言s1e3的课后作业举一反三的疑问

[复制链接]
发表于 2020-8-3 20:45:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1的是退格五次,五个前面的都退没了我可以理解,不过为啥我把退格五次移到后面的时候,就只退了前面倒数第五个字符而已,而不是像第一次那样退五次
最佳答案
2020-8-4 13:33:46
\b 字符是输出设备控制字符,意思是“回退”或者“退格”,而不是通常所理解的“删除”

程序输出时就像我们打字一样,总是在光标位置输出,每输出一个正常字符,光标向右移动一次,下一个字符继续在光标位置输出

而\b的作用是每输出一次\b,光标回退一个位置,但是已经输出的内容还在,此时如果继续输出正常字符,那还是会在光标位置输出

这时光标位置的原字符会被替换成新字符

拿第二个举例子,下划线位置就是光标当前位置

输出字符串:“hello world fishc\b\b\b\b\b \n”
正常输出:“hello world fishc ”  
然后输出5个\b:“hello world fishc”
\b后面是一个空格:“hello world  ishc”

最后一个字符是换行符,注意这里换行符的作用和键盘上的enter回车键不同
换行符\n和退格\b一样属于输出设备控制字符,简单理解就是控制光标位置的字符
输出\n时会把光标直接挪到下一行所以最终的输出结果就是:

============
“hello world  ishc”
<空行>
============

1

1

2

2
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-8-3 20:49:49 | 显示全部楼层
本帖最后由 baige 于 2020-8-3 21:53 编辑

\b将输出位置左移一位,后面有对应的字符就覆盖掉前面的吧,没有就保持原样
对于你的第二个程序,5个\b让光标到F接着输出空格,后面由于没有字符去覆盖,所以保持原样
转义字符 '\r '和 '\b '的作用都是实现光标的移动,从而改变控制台的输出位置。 虽然它们并不能直接清除某一行或一个信息,但是我们可以通过空字符对之前信息的覆盖,进而在视觉上达到清除信息的效果。除了清除信息,它们还可以实现覆盖刷新等其他功能。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-4 13:33:46 | 显示全部楼层    本楼为最佳答案   
\b 字符是输出设备控制字符,意思是“回退”或者“退格”,而不是通常所理解的“删除”

程序输出时就像我们打字一样,总是在光标位置输出,每输出一个正常字符,光标向右移动一次,下一个字符继续在光标位置输出

而\b的作用是每输出一次\b,光标回退一个位置,但是已经输出的内容还在,此时如果继续输出正常字符,那还是会在光标位置输出

这时光标位置的原字符会被替换成新字符

拿第二个举例子,下划线位置就是光标当前位置

输出字符串:“hello world fishc\b\b\b\b\b \n”
正常输出:“hello world fishc ”  
然后输出5个\b:“hello world fishc”
\b后面是一个空格:“hello world  ishc”

最后一个字符是换行符,注意这里换行符的作用和键盘上的enter回车键不同
换行符\n和退格\b一样属于输出设备控制字符,简单理解就是控制光标位置的字符
输出\n时会把光标直接挪到下一行所以最终的输出结果就是:

============
“hello world  ishc”
<空行>
============
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-4 20:00:18 | 显示全部楼层
謝謝大佬們
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-8 02:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表