Подтвердить что ты не робот

Возврат каретки в C?

Вывод следующей программы: hai

Я не понял, как работает каретка \r в этой программе, и в реале кто-нибудь может мне помочь?

#include <stdio.h>
#include<conio.h>

void main()
{
    printf("\nab");
    printf("\bsi");
    printf("\rha");
    _getch();
}
4b9b3361

Ответ 1

Из 5.2.2/2 (семантика символьного отображения):

\b (backspace) Перемещение активного положение на предыдущую позицию текущая строка. Если активный позиция находится в исходном положении строка, поведение дисплея устройство не указано.

\n (новая строка) Перемещение активного положение в исходное положение следующую строку.

\r (возврат каретки) Перемещает активный положение в исходное положение текущая строка.

Здесь ваш код производит:

  • <new_line>ab
  • \b: назад один символ
  • write si: переопределяет b с помощью s (создавая asi во второй строке)
  • \r: назад в начале текущей строки
  • write ha: переопределяет первые два символа (создавая hai во второй строке)

В конце вывод:

\nhai

Ответ 2

Программа печатает ab, возвращает один символ и печатает si, переписывая b в результате asi. Возврат каретки возвращает каретку в первый столбец текущей строки. Это означает, что ha будет напечатано над as, и результат будет hai

Ответ 3

Шаг за шагом:

[перевод строки] абы

ab

[Backspace] си

asi

[возврат каретки] га

hai

Возврат каретки, не вызывает новую строку. В некоторых случаях один CR или LF может быть переведен в пару CR-LF. Это зависит от консоли и/или потока.