2013-04-08 45 views
1

使用以下代碼,我正在清除提示符但不清除屏幕。原因是什麼?unix中的清除提示符

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); 

我在擦除提示符,但它的痕跡出現,直到我輸入長的東西。

回答

1

printf("\033[2J");這將清除終端屏幕。

我看到你正在使用跳過字符\b,你是否試圖重置終端光標到開始?因爲這也可以用這個來完成:
printf("\033[1;1H");

+0

高效巧妙。上投票。 – 2013-04-08 11:36:36

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"); 
} 
+0

做得很好,投了票。 – 2013-04-08 11:36:16