> "OutputXY.txt"
输出:backspac
>>
输出:退格
这是为什么?由于for /F
添加了终止换行符,因此printf("backspace\b");
无效?
答案 0 :(得分:1)
printf("backspace\b");
在典型的终端或模拟器上,这将打印字符串backspace
,然后将光标移回一个位置,使其位于最终e
之上。如果您正在查看backspac
,那是因为在e
调用之后其他内容会破坏printf
,因为相同的程序会打印更多输出(您没有&# 39; t显示我们)或因为程序结束后发生了一些事情。如果printf
是程序中唯一的语句,并且您在类Unix的shell中运行,那么shell提示符可能会破坏e
。
puts("backspace\b");
puts
函数会在其输出中附加换行符'\n'
。这相当于
printf("backspace\b\n");
与上一个示例一样,\b
会使光标移回e
顶部的一个位置,但随后\n'
会使其移至开头下一行的内容,它并没有破坏e
。
在这两种情况下,退格符'\b'
都写入stdout。如果您使用重定向到文件的输出运行程序然后检查文件,您将看到它,可能显示为^H
或以十六进制显示为08
,具体取决于您查看的方式。
答案 1 :(得分:0)
看起来它们都将光标向后移动了一个位置,但puts()在单词的末尾添加了换行符,因此如果您尝试覆盖当前光标,则实际上不会删除该行。 e',因为光标已经下降到下一行。
就像有人在评论中所说,代码示例会给出更准确和正确的答案。
编辑:根据评论判断,似乎将光标向后移动然后打印字符将覆盖该字词,除非该字符串是换行符,否则不会。printf("backspace\b\n "); // Output: backspace
printf("backspace\b"); // Output: backspac|e (| for cursor)
printf("backspace\b "); // Output: backspac