Переписывание информации в одной строке - PullRequest
3 голосов
/ 27 января 2012

Я новичок в программировании на C и хочу, чтобы обратный отсчет проходил в одной строке, например, так:

Time left: n

где n будет единственной частью этой строки, которая была обновлена.

Я говорю о программировании командной строки. Я знаю, как вести обратный отсчет, мне просто нужна помощь, чтобы держать его на одной строке и динамически обновлять эту строку.

1 Ответ

6 голосов
/ 27 января 2012

Вы можете использовать \r, чтобы вернуть курсор в начало строки и перезаписать строку.Итак:

for (int i = 10; i > 0; i--) {
    printf("\rCountdown: %d ", i);
    fflush(stdout);
    sleep(1);
}
printf(" done.\n");

fflush(stdout); необходим, потому что по умолчанию stdout сбрасывает себя только тогда, когда его выходной буфер заполнен, или выводится \n.

...