Я пытался запустить вашу программу (в точности так, как это выглядит в вашем вопросе)
pru.c
#include<stdio.h>
int main()
{
char c ;
scanf(" %c",&c);
printf("%c",c);
return 0;
}
и с учетом того, что вы разместили в своем вопросе (просто A
плюс Введите ) и получите следующий результат:
$ cc pru.c
$ ./a.out
A
A$ _
, который является точно ожидаемым результатом.Таким образом, проблема должна быть в другом месте, или у вас совершенно другой сценарий, и вам нужно предоставить больше информации.
Я тестировал это на ПК (Intel Core Duo) с компилятором FreeBSD 12.0 / CLANG.(здесь $
- приглашение Unix, а _
- курсор после запуска) И, конечно, программа была отредактирована с помощью vi(1)
(это не влияет на результат).
Редактировать
Попробуйте изменить
printf("%c",c);
этим
printf("0x%02x, [%c]\n",c,c);
, чтобы получить шестнадцатеричный дамп только что введенного символа, а также его представление в виде печати.,\n
в конце означает, что приглашение вашей оболочки не потребляет (не перезаписывает) вывод последней строки вашей программы (в основном, если вы изменили переменную приглашения PS1
), скрывая напечатанный символ.
Это должно привести к (на вашем опубликованном входе) следующий вывод:
$ cc pru.c <--- compilation of new pru.c
$ ./a.out <--- default name for your program executable.
A <--- this is your input (followed by <return>)
0x41, [A] <--- this should be your program output.
$ _ <--- prompt (and cursor) after your program execution