撤消打印到命令行的换行符(\ 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 1Status: 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中的简单游戏!