Проблема в том, что когда вы вводите первое значение в командной строке, вы фактически помещаете 2 буфера в буфер стандартного ввода: нужный вам символ и символ LF.
Общепринято, что вам лучше использовать fgets (char * s, int n, FILE * stream), где * stream - это stdin, * s - это массив символов, а n - это максимальное количество символов для чтения. , Это дает вам больше контроля над количеством прочитанных байтов, чтобы предотвратить ошибки переполнения. В этом случае это 2, потому что это символ, который вы хотите, плюс символ LF. Строки в C завершаются нулем, поэтому вам понадобится как минимум 3-байтовый массив для хранения одного символа. Чтобы получить доступ к одному нужному символу, просто прочитайте индекс 0 массива, который вы передали в fgets.
Ex:
char buffer[3];
fgets(buffer,2,stdin);
charyouwant = buffer[0];