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