撤消打印到命令行的换行符(\ n)
printf("Error %d\n", 1); printf("\nStatus: %d%%", 50);
版画
Error 1 Status: 50%
在此设置中,是否有机会在Error 1\n
和\nStatus: 50%
之间插入Error 2\n
。 我知道\r
和\b
可用于更改同一行中的打印文本(例如,如果Error 1
和Status: 50%
之间只有一个\n
Status: 50%
),但是我可以更改前一行中的文本吗?
谢谢!
对不起,你不能。
但您可以发出系统调用来清除整个屏幕,如system("clear")
(取决于操作系统)。
或者像评论中提到的Kos一样使用ncurses
。
@Ryan说的是什么。
解释原因: stdout
是一些不必是终端的抽象流。 它可以是文件,管道,套接字,打印机,文本到语音设备等等。 在许多情况下,你要求做什么都没有意义。 因此,您需要一些专门用于终端的库。
您可以使用ANSI Escapesequences将“光标”向上移动一行:
void cursorOnLineUp(void) { printf("\033[1A"); }
或者将其设置为特定位置:
void setCursor(int column, int row) { printf("\033[%d;%dH", row, column) }
没有尝试过C ++,但成功地将它用于ANSI-C中的简单游戏!