\b и \r редко используются на практике. Я только узнал, что неправильно понял эти две escape-последовательности. Простой тест:
printf("foo\bbar\n");
Я ожидал, что он выведет fobar, потому что \b будет возвращать курсор, а b будет перезаписывать второй o, но вместо этого он выдает: foobar
То же самое с \r:
printf("foo\rbar\n");
Я думал, что \r переместит курсор в начало текущей строки, поэтому bar заменит foo, поэтому окончательный вывод должен быть bar. Однако он фактически выводит:
foo
bar


