Защита от пустого ввода - C (СИ)
Формулировка задачи:
Привет всем! Написал программку рассчитывающую возрастные группы(такое было задание). Прога работает, реализована защита от ввода отрицательных значений и если значение равно нулю. Как реализовать защиту от пустого ввода, то есть, если в строке ввода просто нажата клавиша "Enter"?
#include <stdio.h>
/*
* 1. Напишите программу, которая будет спрашивать возраст пользователя. Если
пользователь введет отрицательное или нулевое число, программа выдаст
сообщение об ошибке. В противном случае программа проверит возраст и
определит возрастную группу:
Если возраст <=11, тогда пользователь - ребенок
Если возраст >11 но меньше 18 - подросток
Если возраст >=18 - взрослый
И выведет соответствующее сообщение на экран, например:
Ваша возрастная группа - дети
Ваша возрастная группа - подростки
Ваша возрастная группа - взрослые
*/
int main() {
// Переменные
int age = 0;
printf("Введите Ваш возраст:");
printf("\n");
// Ввод данных
scanf("%i", &age);
// Обработка ввода возраста
if(age > 0)
{
printf("Ваша возрастная группа - ");
if(age > 0 && age <= 11)
{
printf("дети");
}
else if(age > 11 && age < 18)
{
printf("подростки");
}
else if(age >= 18)
{
printf("взрослые");
}
}
else
{
printf("Ошибка! Введите положительное число, больше ноля...");
}
return 0;
}Решение задачи: «Защита от пустого ввода»
textual
Листинг программы
int n;
char buf[32];
fgets(buf, 32, stdin);
if(sscanf(buf, "%d", &n) != 1)
printf("Error");
Объяснение кода листинга программы
- Объявлены две переменные:
nтипа int иbufтипа char с размером 32 символа. - В строке
fgets(buf, 32, stdin);считывается строка из стандартного ввода (клавиатуры) в буферbuf. - Если введенная строка пустая или содержит некорректный формат для числа, то функция
sscanfвозвращает значение меньше 1. - Если введенная строка корректно содержит число, то число преобразуется в формат int и сохраняется в переменной
n. - Если функция
sscanfвернула значение меньше 1, то выводится сообщение об ошибкеError.