Как заставить курсор консоли Windows перейти на следующую строку в конце строки - PullRequest
1 голос
/ 08 мая 2019

У меня проблемы с эмулятором терминала, над которым я работаю, и мне удалось сузить проблему до странного поведения курсора в консоли Windows.В обычном cmd, когда вы пишете символ точно в конец строки, курсор переходит на следующую строку.(См. Рисунок ниже) cmd cursor behavior

Когда я пытаюсь добиться того же с помощью printf в программе, которую я пишу, курсор остается на том же символе.(См. Рисунок ниже) cmd cursor behavior

Мне удалось добиться "cmd-like" результата, напечатав хакерский " \b", но я пытаюсь найти лучший способ сделать это (т.е.первый символ в следующей строке может быть значимым, и я не хочу его стирать. Чтение этого символа, конечно, не будет элегантным).

Я ищу способ сделать это автоматически.Может быть, какая-то конфигурация консоли?Кто-нибудь здесь знает, как это сделать?

Пример кода (при условии, что консоль имеет размер по умолчанию 80):

int main() {
    printf("12345678901234567890123456789012345678901234567890123456789012345678901234567890");
    fflush(stdout);
    getc();
    return 0;
} 

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

Ответы [ 2 ]

1 голос
/ 15 мая 2019

Я нашел решение: https://docs.microsoft.com/en-us/windows/console/setconsolemode

Флаг DISABLE_NEWLINE_AUTO_RETURN, по-видимому, включен по умолчанию в VS.

0 голосов
/ 08 мая 2019

В окнах конец строки представлен как "\ r \ n", а не (как в unix) "\ n". \ R - возврат каретки, а \ n - перевод строки. Таким образом, отправка "\ r \ n" для новой строки должна решить вашу проблему.

https://en.wikipedia.org/wiki/Newline

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...