1

使用以下代码,我正在擦除提示但不清除屏幕。应该是什么原因?

   printf("\033[7mHello how are you doing? press 'q' to quit\033[0m");
   fflush(stdout);
   ----
   doing some other stuff
   ----

   printf("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\
           \b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\033[0m");
           fflush(stdout);

我正在擦除提示,但它的痕迹会出现,直到我输入那么长的东西。

4

2 回答 2

1

printf("\033[2J");这将清除终端屏幕。

我看到您正在使用跳过字符\b,您是否尝试将终端光标重置为开头?因为这也可以这样做:
printf("\033[1;1H");

于 2013-04-08T03:16:05.730 回答
1

\b仅移动光标位置,不会删除提示。

擦除为每个退格写一个空格。

char * hello = "\033[7mHello how are you doing? press 'q' to quit\033[0m" ;
int len = strlen( hello ) ;
for( int i = 0 ; i < len ; i++ )
{
    printf("\b \b");
}
于 2013-04-08T03:16:57.283 回答