Answers:
根据您所使用的终端或控制台程序的类型,您的结果将有所不同,但是可以,大多数情况下\b
是无损退格键。它将光标向后移动,但不会擦除其中的内容。
所以对于这hello worl
部分,代码输出
你好世界 ^
...(其中^
显示光标所在的位置),然后输出两个\b
字符,该字符将光标向后移动两个位置而不会擦除(在您的终端上):
你好世界 ^
请注意,光标现在位于上r
。然后输出d
,将覆盖r
并给出:
你好沃德尔 ^
最后,它输出\n
,这是一个非破坏性的换行符(同样,在大多数终端上,包括您的终端上),因此l
保持不变,并将光标移至下一行的开头。
r
被替换为d
。解释仍然合适。
cmd.exe
和command.com
终端并非总是插入(您可以使用Ins键切换行为)。我很惊讶地发现我的* nix主计算机上的Gnome Terminal总是插入,甚至似乎都不喜欢它,而不是基于Ins键的切换。以前从未注意到。显然,我几乎从来不想打字。:-)
..... ^ <=指向“打印头”的指针
/* part1 */
printf("hello worl");
你好世界 ^ <=指向“打印头”的指针
/* part2 */
printf("\b");
你好世界 ^ <=指向“打印头”的指针
/* part3 */
printf("\b");
你好世界 ^ <=指向“打印头”的指针
/* part4 */
printf("d\n");
你好沃德尔 ^ <=指向下一行“打印头”的指针
'\n'
屏幕上没有显示。已经存在的东西保持不变;不能用空格或任何其他字符表示代替。