C - 删除已打印的换行符

标签 c linux newline backspace

如何删除已经打印并加载到缓冲区中的换行符?据我所知,\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/

相关文章:

c++ - 在Qt中搜索文件扩展名为zimage的文件

yum 更新后 PHP 无法在 CentOS 6 上运行

bash - 使用换行符在 Bash 中构建字符串

c - 使用 TCP/IP 协议(protocol)的 c 中的服务器客户端应用程序

c++ - 仿射变换、简单旋转和缩放或其他完全?

c - 如何通过单个scanf输入多个变量

linux - 了解 netfilter REDIRECT 目标

html - 如何在 Django 模板中生成换行符

c - 从fgets()输入中删除结尾的换行符

c++ - 如何定位可执行文件中函数所在的位置?