2013-04-08 2 views
1

С помощью следующего кода я стираю приглашение, но не очищаю экран. Что может быть причиной?clearing prompt in 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

Эффективный и умный. Проголосовали. –

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

Красиво сделано, проголосовали. –