Я хочу написать код, который проверяет, вводит ли пользователь правильный ввод, т. Е. 1
, 2
, 3
или 4
. В противном случае выводится сообщение «ошибка ввода». Если пользователь вводит букву, например, поскольку входная переменная в scanf
имеет тип char
, она также работает. Но в случае нескольких символов я расскажу о следующем решении: я пытаюсь ввести все символы в массив char
и проверить, сколько членов в нем. Я написал следующий код:Проверьте входной файл scanf
char option;
int countIn;
char inArray[10];
do { //while option!=4
scanf("%c", &option);
while (countIn < 10 && scanf("%c", &option) != -1 && option != '\n') {
inArray[countIn] = option;
countIn++;
}
if (countIn > 1) { option = 10; }
else { option = inArray[0]; }
countIn = 0;
} while (option != '4');
Проблема заключается в том, когда я вхожу 1
, например, программа работает хорошо, но на второй итерации цикла, то scanf
не работает, и программа автоматически выполняет часть 1
снова и опять.
какой я сделал неправильно?
'countIn' не инициализирован! – chqrlie
@Juliette Вы можете попробовать [Это тоже] (http://stackoverflow.com/questions/31770861/validate-parameter-for-0-or-1/31772378#31772378). – Michi