4

如何删除在 C 代码中打印的换行符?我想写一堆行并删除它们,暂停后打印一些其他行然后删除它们......在一个循环中。就像无需滚动的实时更新。我可以打印字符并通过打印退格字符来删除它们,但是一旦我打印新行,我就无法删除创建的行。有什么办法可以做到这一点?

4

3 回答 3

2

退格字符'\b'(ASCII 8)移动到行内的前一个位置。

如果您低于xtermvt100兼容,您可以使用控制台代码

#include <stdio.h>
#include <unistd.h> /* for sleep() */

int main(void)
{
    printf("Line\n");
    sleep(2);
    printf("\033[A"); /* move cursor one line up */
    printf("\033[K"); /* delete line */
    return 0;
}

作为替代方案,您可以查看ncurses (Unix) 或conio2 (Windows / MINGW)

于 2013-08-29T16:29:39.620 回答
1

退格字符不会“删除”任何内容。就字节流/文件内容而言,它只是一个像其他任何东西一样的字符。但是,当打印到终端时,退格会将光标位置向左移动一个单位,从而允许下一个打印字符在屏幕上替换它。在大多数终端上,如果您已经在最左边的位置,它什么也不做,但即使它确实在那里工作,它也不知道在上一行移动到哪里。

于 2013-08-29T17:48:33.940 回答
0

0x08,或\bASCII 码,只是一个(特殊)字符,发送到stdout. 如何stdout处理取决于实施。

参考:C 中 \b 和 \r 的用法

于 2013-08-30T00:58:29.740 回答