С исходным кодом (называемым bs97
, скомпилированным из bs97.c
) и с моей подсказкой командной строки Osiris JL:
я получаю вывод:
Osiris JL: bs97
123Osiris JL:
Обратите внимание, что новое приглашение имеетперезаписать 45
.Вы можете видеть это, если вы добавите putchar('\n');
после второго fflush()
.(Я добавил void
к int main(void)
, чтобы избежать предупреждений (ошибок) компиляции с моими параметрами компиляции по умолчанию.)
Osiris JL: make bs97 && bs97
gcc -O3 -g -std=c11 -Wall -Wextra -Werror -Wmissing-prototypes -Wstrict-prototypes bs97.c -o bs97
12345
Osiris JL:
На этот раз 4
и 5
все еще видны.
Простое использование backspace не стирает содержимое, которое было там ранее; позиционирует позицию записи на экране на одно место, вот и все.Если вы хотите стереть то, что было там, вам нужно вывести printf("\b \b\b \b")
, чтобы вернуться назад, вывести пробел и вернуться снова - повторить дважды.Или вы могли бы использовать printf("\b\b ")
, но это оставило бы позицию записи после двух пробелов;или вы можете использовать printf("\b\b \b\b")
, чтобы покинуть позицию записи после 3
.И есть другие варианты этой темы.
Со второй программой со сном я получаю аналогичное поведение, за исключением того, что 12345
отображается, пока программа спит.
I 'm тестирование на Mac под управлением MacOS 10.14 Mojave с использованием самодельного GCC 8.2.0 или компилятора clang
из XCode 10.0.