Вопрос, который вы задали, я тоже столкнулся с ним несколько месяцев назадТо, что я знал, я говорю вам.
, когда вы используете %c
для scanf()
, он может принимать любое значение ввода из 1 символа.будь то число, алфавит или последняя нажатая клавиша ввода, равная \n
.Он также может принимать значения буфера.Так что в этом случае я отличаюсь от scanf()
и %d
, в которых scanf()
ждет числа и не принимает алфавит.Но для scanf()
и %c
он может принимать даже значения буфера.Таким образом, чтобы преодолеть эту проблему, вы можете использовать эти три метода
1) вы можете объявить встроенную функцию fflush(stdin);
непосредственно перед scanf()
.вот так
printf("Enter your first name to the screen :");
fflush(stdin);
scanf("%c", &userInput);
тогда ваша программа будет работать нормально.И не забудьте включить заголовочный файл <stdlib.h>
.эта функция содержится в этом. Теперь я расскажу вам недостатки этого метода.я читал во многих местах, что этот подход уменьшает переносимость программы, поэтому ANSI не рекомендует этот способ.
2) вы можете объявить массив символов вместо символьной переменной.тогда scanf()
.это также отлично работает.
3) этот самый простой.когда вы пишете заявление вроде этого scanf("%c", &userInput);
, я предлагаю вам написать заявление вроде этого scanf(" %c", &userInput);
Так вы можете обнаружить разницу?На самом деле пробел добавляется непосредственно перед %c
, и теперь программа работает.
Вы можете попробовать все три метода, и если один из них не работает, пожалуйста, сообщите мне