关于c语言s1e3的课后作业举一反三的疑问
1的是退格五次,五个前面的都退没了我可以理解,不过为啥我把退格五次移到后面的时候,就只退了前面倒数第五个字符而已,而不是像第一次那样退五次 本帖最后由 baige 于 2020-8-3 21:53 编辑\b将输出位置左移一位,后面有对应的字符就覆盖掉前面的吧,没有就保持原样
对于你的第二个程序,5个\b让光标到F接着输出空格,后面由于没有字符去覆盖,所以保持原样
转义字符 '\r '和 '\b '的作用都是实现光标的移动,从而改变控制台的输出位置。 虽然它们并不能直接清除某一行或一个信息,但是我们可以通过空字符对之前信息的覆盖,进而在视觉上达到清除信息的效果。除了清除信息,它们还可以实现覆盖刷新等其他功能。 \b 字符是输出设备控制字符,意思是“回退”或者“退格”,而不是通常所理解的“删除”
程序输出时就像我们打字一样,总是在光标位置输出,每输出一个正常字符,光标向右移动一次,下一个字符继续在光标位置输出
而\b的作用是每输出一次\b,光标回退一个位置,但是已经输出的内容还在,此时如果继续输出正常字符,那还是会在光标位置输出
这时光标位置的原字符会被替换成新字符
拿第二个举例子,下划线位置就是光标当前位置
输出字符串:“hello world fishc\b\b\b\b\b \n”
正常输出:“hello world fishc ”
然后输出5个\b:“hello world fishc”
\b后面是一个空格:“hello worldishc”
最后一个字符是换行符,注意这里换行符的作用和键盘上的enter回车键不同
换行符\n和退格\b一样属于输出设备控制字符,简单理解就是控制光标位置的字符
输出\n时会把光标直接挪到下一行所以最终的输出结果就是:
============
“hello worldishc”
<空行>
============
謝謝大佬們
页:
[1]