C - 删除已打印的换行符

Fra*_*ank 2 c linux newline backspace

如何删除已打印并加载到缓冲区的换行符?据我所知,该\\b字符仅将光标移回到当前行,并且不适用于换行符。我该如何解决这个问题?

\n\n

如果对问题进行编辑以表明如何发出这种不需要的换行符,将会很有帮助。\xe2\x80\x93 马洪里·莫里安库默

\n\n

其实这并非不可取。我想在输出另一种状态之前预览用户的缓冲区的一种状态。然而,我不想连续显示多个缓冲区状态。例如,假设我想显示两个矩阵,

\n\n
1 1 1 1\n1 1 1 1\n1 1 1 1\n1 1 1 1\n
Run Code Online (Sandbox Code Playgroud)\n\n

\n\n
0 0 0 0\n0 0 0 0\n0 0 0 0\n0 0 0 0\n
Run Code Online (Sandbox Code Playgroud)\n\n

我想要第二个矩阵替换第一个矩阵。为此,我需要删除第一个矩阵的输出数字。

\n\n

也许您可以考虑再次编辑您的问题并指出操作系统和/或终端类型?

\n\n

当前运行 Linux (Ubuntu) x64,使用 xterm(确切地说是 ROXTerm)。

\n

ick*_*fay 5

有两个广泛支持的字符用于覆盖之前写入的内容:\\b退格键(正如您所提到的)和\\r回车符,用于将 \xe2\x80\x98 写入头\xe2\x80\x99 返回到开头线。

\n\n

如果你想回到上一行,你\xe2\x80\x99并不是完全运气不好,但你\xe2\x80\x99将不得不求助于一些东西,尽管仍然得到广泛支持,特别是终端仿真器,但可能没有得到如此广泛的支持(例如,如果您将其通过管道传输到 ,它可能不会\xe2\x80\x99 工作lp)。我指的是 ANSI 转义序列。\xe2\x80\x99 有很多,但值得注意的是^[[A,它将 \xe2\x80\x98write head\xe2\x80\x99 向上移动一行。(^[这里是ESCASCII 字符,十六进制值0x1B)。要在 C 中使用它:

\n\n
printf("\\x1B[A");  /* move up one line */\n
Run Code Online (Sandbox Code Playgroud)\n