Защита от пустого ввода - 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");

Объяснение кода листинга программы

  1. Объявлены две переменные: n типа int и buf типа char с размером 32 символа.
  2. В строке fgets(buf, 32, stdin); считывается строка из стандартного ввода (клавиатуры) в буфер buf.
  3. Если введенная строка пустая или содержит некорректный формат для числа, то функция sscanf возвращает значение меньше 1.
  4. Если введенная строка корректно содержит число, то число преобразуется в формат int и сохраняется в переменной n.
  5. Если функция sscanf вернула значение меньше 1, то выводится сообщение об ошибке Error.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.75 из 5
Похожие ответы