C - 使用\ b来放置()与printf()

时间:2015-12-13 19:58:50

标签: c printf puts

> "OutputXY.txt"

输出:backspac

>>

输出:退格

这是为什么?由于for /F添加了终止换行符,因此printf("backspace\b"); 无效?

2 个答案:

答案 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