“退格”转义字符'\ b':意外行为?所以我终于通过K&R阅读,并且我在前几页中学到了一些东西,即有一个退格转义字符\b。所以我去测试它,并且有一些非常奇怪的行为:#include <stdio.h>main (){
printf("hello worl\b\bd\n");}输出是hello wodl有谁能解释一下?
3 回答
Qyouu
TA贡献1786条经验 获得超11个赞
您的结果将根据您所使用的终端或控制台程序类型而有所不同,但是,大多数\b
是非破坏性退格。它向后移动光标,但不会删除那里的光标。
因此对于该hello worl
部分,代码输出
你好 ^
...(^
显示光标所在的位置)然后输出两个\b
字符,将光标向后移动两个位置而不擦除(在终端上):
你好 ^
请注意,光标现在位于r
。然后它输出d
,覆盖r
并给我们:
你好wodl ^
最后,它输出\n
,这是一个非破坏性换行(同样,在大多数终端上,显然包括你的),所以l
保持不变,光标移动到下一行的开头。
米琪卡哇伊
TA贡献1998条经验 获得超6个赞
..........^ <=指向“打印头”的指针
/* part1 */ printf("hello worl");
你好 ^ <=指向“打印头”的指针
/* part2 */ printf("\b");
你好 ^ <=指向“打印头”的指针
/* part3 */ printf("\b");
你好 ^ <=指向“打印头”的指针
/* part4 */ printf("d\n");
你好wodl^ <=指向下一行“打印头”的指针
- 3 回答
- 0 关注
- 673 浏览
添加回答
举报
0/150
提交
取消