如何删除已经打印并加载到缓冲区中的换行符?据我所知,\b
字符只能将光标移回当前行,而不能用于换行符。我该如何解决这个问题?
如果对问题进行编辑以指示这个不受欢迎的换行符是如何发出的,那将会很有帮助。 – Mahonri Moriancumer
其实也并非不可取。我想在输出另一种状态之前用缓冲区的一种状态预览用户。但是,我不想连续显示多个缓冲区状态。例如,假设我要显示两个矩阵,
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
和
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
我想要第二个矩阵替换第一个。为此,我需要删除第一个矩阵的输出数字。
也许您可以考虑再次编辑您的问题并指明操作系统和/或终端类型?
目前正在运行 Linux (Ubuntu) x64,使用 xterm(确切地说是 ROXTerm)。
最佳答案
有两个广泛支持的字符用于覆盖之前编写的内容:\b
,如您提到的退格键,以及 \r
,回车符,将“写头”带回行首。
如果您想返回到上一行,您并非完全不走运,但您必须求助于一些仍然得到广泛支持的东西,尤其是终端仿真器,可能没有得到如此广泛的支持(例如,如果您将其通过管道传输到 lp
,它可能无法工作)。我指的是 ANSI 转义序列。有很多,但值得注意的是 ^[[A
,它将“写入头”向上移动了一行。 (^[
这里是ESC
ASCII字符,十六进制值0x1B
)。在 C 中使用它:
printf("\x1B[A"); /* move up one line */
关于C - 删除已打印的换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24967260/