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

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

Мне удалось добиться «командоподобного» результата, напечатав хакерский " \b", но я пытаюсь найти лучший способ сделать это (т. е. первый символ в следующей строке может иметь смысл, и я не хочу чтобы стереть его. Чтение этого символа, конечно, не было бы элегантным).
Я ищу способ сделать это автоматически. Может какая-то конфигурация консоли? Кто-нибудь здесь знает, как это сделать?
Пример кода (при условии, что консоль имеет размер по умолчанию 80):
int main() {
printf("12345678901234567890123456789012345678901234567890123456789012345678901234567890");
fflush(stdout);
getc();
return 0;
}
Если вы запустите этот код, после печати курсор останется на символе 0 в конце строки. Мой вопрос заключается в том, как сделать так, чтобы курсор отображался в начале следующей строки, не изменяя жестко закодированную строку.
Обе картинки внутри поста
Вы создаете консольный буфер для этого? Или это отдельная программа от cmd?
Простое консольное приложение в Visual Studio
Пожалуйста, вы не включаете никакого кода, и вопрос вообще не о программировании (только о том, как работает консольное приложение Windows). Пожалуйста, отредактируйте вопрос, чтобы отразить то, что вы делаете, ожидаемый ответ и фактически полученный ответ. Подробнее см. в Как создать минимальный, полный и проверяемый пример.
Я добавил пример кода.





В Windows конец строки представлен как "\r\n", а не (как в unix) "\n". \r — это возврат каретки, а \n — новая строка. Таким образом, испускание "\r\n" для новой строки должно решить вашу проблему.
https://en.wikipedia.org/wiki/Новая строка
Данные, конечно, не статичны, они поступают из другого приложения. Я просто хочу, чтобы курсор всегда был после текущего символа. Для вывода новой строки мне пришлось бы считать символы и записывать их в конце строки, что еще хуже, чем просто добавлять "\b" после каждого printf.
Многие библиотеки Windows автоматически вставляют \r перед \n, если вы помечаете указатель FILE * как текст, просто для обеспечения переносимости в средах UNIX. Ваша рекомендация в любом случае бесполезна, так как вопрос не о программировании на C как помеченном. Мы вообще не видели никакого кода.
Я нашел решение: https://docs.microsoft.com/en-us/windows/console/setconsolemode
Флаг DISABLE_NEWLINE_AUTO_RETURN, по-видимому, включен по умолчанию в VS.
Вы не вставили картинку