Я хочу распечатать текущее время (при помощи printf) в том же месте, но я хочу сделать это в бесконечном цикле, например:
while(1) {printf("Date and Time are %s", asctime(localtime(¤t))); }
. Таким образом, прежде чем я использую printf, я должен переместить курсор назад в его пристальное положение. Как сделать это?
заранее спасибо
напишите \ r
while(1) {
printf("\rDate and Time are %s ", asctime(localtime(¤t)) );
fflush(stdout);
}
Вы можете сделать это следующим образом (посмотрите на \r с большим количеством пробелов!):
while(1) {
printf("Date and Time are %s\r ", asctime(localtime(¤t)));
fflush(stdout);
}
Чтобы просто переместить курсор в начало текущей строки, вы можете напечатать "\ r", который делает именно это. Обратите внимание, что старый текст не стирается, поэтому будьте осторожны, чтобы перезаписать его или очистить кодом ANSI.
В системах, использующих управляющие коды ANSI / VT, вы можете напечатать «\ 033 [1; 2H», чтобы установить курсор. Он будет перемещать курсор и ничего не печатает на экране. Значения 1 и 2 - это строка и столбец, поэтому измените их, чтобы использовать разные позиции.
Существуют также другие коды для цветов и прочего: http://bluesock.org/~willg/dev/ansi.html
Обратите внимание, что ни один из этих кодов не является переносимым и может не работать на все системы (особенно они не работают по умолчанию в некоторых системах Microsoft). Вместо этого неподдерживающие системы будут отображать на экране какой-то мусор (сам код).