C перемещение курсора к началу текущей строки

Я хочу распечатать текущее время (при помощи printf) в том же месте, но я хочу сделать это в бесконечном цикле, например:

while(1) {printf("Date and Time are %s", asctime(localtime(&current))); } 

. Таким образом, прежде чем я использую printf, я должен переместить курсор назад в его пристальное положение. Как сделать это?

заранее спасибо

8
задан JosiP 30 December 2011 в 06:35
поделиться

4 ответа

напишите \ r

while(1) {
 printf("\rDate and Time are %s      ", asctime(localtime(&current)) );
 fflush(stdout);
}
6
ответ дан 5 December 2019 в 10:02
поделиться

Вы можете сделать это следующим образом (посмотрите на \r с большим количеством пробелов!):

while(1) {
   printf("Date and Time are %s\r         ", asctime(localtime(&current)));
   fflush(stdout); 
} 
3
ответ дан 5 December 2019 в 10:02
поделиться

Чтобы просто переместить курсор в начало текущей строки, вы можете напечатать "\ r", который делает именно это. Обратите внимание, что старый текст не стирается, поэтому будьте осторожны, чтобы перезаписать его или очистить кодом ANSI.

В системах, использующих управляющие коды ANSI / VT, вы можете напечатать «\ 033 [1; 2H», чтобы установить курсор. Он будет перемещать курсор и ничего не печатает на экране. Значения 1 и 2 - это строка и столбец, поэтому измените их, чтобы использовать разные позиции.

Существуют также другие коды для цветов и прочего: http://bluesock.org/~willg/dev/ansi.html

Обратите внимание, что ни один из этих кодов не является переносимым и может не работать на все системы (особенно они не работают по умолчанию в некоторых системах Microsoft). Вместо этого неподдерживающие системы будут отображать на экране какой-то мусор (сам код).

8
ответ дан 5 December 2019 в 10:02
поделиться

Возможно, получится напечатать "\r" в начале строки.

0
ответ дан 5 December 2019 в 10:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: