Вы можете использовать escape-последовательности ANSI: \033[<N>A
, где <N>
будет количеством строк, которое вам нужно увеличить (в данном случае одну), поэтому код будет выглядеть так:
#include<stdio.h>
main(void) {
char a;
printf("scan: ");
scanf("%c",&a);
printf("%c[1A back", 033);
}
Кроме того, вы не должны объявлять main как void
.Обратите внимание, что escape-последовательности не будут работать в некоторых терминалах (например, Windows cmd.exe или DOS без установленного ANSI.SYS).
system("cls")
будет наихудшим способом решения проблемы, и установка только ncursesпереместить курсор вверх - это полное излишество, потому что у вас всегда есть это простое решение, которое я представил выше.
Всякий раз, когда вы захотите узнать больше о escape-последовательностях ANSI, отметьте this .Если вы хотите перемотать курсор до конца строки, отметьте это:
#include<stdio.h>
main(void) {
char a;
printf("scan: ");
scanf("%c",&a);
printf("%c[1Ascan: %c back", 033, a);
}
Вы должны воссоздать содержимое строки, хотя.Но это не должно быть слишком проблематично.Это можно упростить, если использовать расширенные управляющие последовательности ANSI, которые вы можете проверить по приведенной ссылке.