Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите с програмкой си

Юра Трофимов Мастер (1038), закрыт 4 года назад
printf("Enter more date - 1, exit - 0: ");
scanf("%d", &a);
Нужно чтобы при вводе не 1 и 0 программа повторно просила бы ввести 1 или 0. Если не правильно цифру ввести, то понятно как сделать, а если вместо цифры ввести букву или символ?
Лучший ответ
Παν μέτρον άριστον Мыслитель (9566) 4 года назад
Код символа - это целое число. 0 - это код символа '\0' (нулевой символ, используется для "си-строк" или "нуль-терминированных строк").

Просто так ввести его с клавиатуры не получится. Если пользователь введёт не один символ, то в потоке ввода останутся все символы, кроме первого. Чтобы пропустить все символы, которые могут остаться в потоке, можно использовать scanf("%[^\n]%*c");

Чтобы проверить, ввёл ли пользователь число или другие символы, можно сначала проверить, является ли первый введенный символ цифрой (isdigit в ctype.h). И, если нет, то выдать сообщение об ошибке и пропустить поток ввода. А если да, то переместить указатель потока назад на один, считать число, а потом уже пропустить (на случай если пользователь ввел что-то типа "1abc").

Можно еще сложнее, но тогда придется читать не на один символ и возвращать указатель дальше, естественно.
Остальные ответы
Похожие вопросы