Проверка на корректный ввод времени - C (СИ)
Формулировка задачи:
Всем доброго времени суток.
И так нужно проверить на валидный ввод времени(min:sec):
Пример 3:04; 15:34; 59:59;
Я делаю так:
Я не знаю точно, что и в каком случае возвращает scanf, но
к примеру на ввод одного числа можно проверить так:
Следующий код таким же макаром не работает
Если считывать
scanf("%d:%d", &a, &b);
if (scanf("%d", &a) != 1) { printf("***Ошибка!!!***\n"); return; }
if (scanf("%d:%d", &a, &b) != 1) { printf("***Ошибка!!!***\n"); return; }
scanf("%d:%d", &a, &b);
и вводить не цифры, а символы то все проходит успешно...(( Как же мне проверить то, что человек ввел не буквы а числа?
Или может есть более адекватный и красивый вариант?
scanf("%d:%d", &a, &b);
- этот вариант вообще не правильный так как если я введу к примеру "1:02" то получу в а=1 и в b=2(так как 02 это число 2)Решение задачи: «Проверка на корректный ввод времени»
textual
Листинг программы
#include <stdio.h> main() { unsigned int a,b; if(scanf("%u:%u", &a, &b)<2) { printf("False input. "); return 0; } else printf("True input. "); if(a>59 || b>59) printf("Invalid data."); else printf("%d:%02d", a, b); return 0; }
Объяснение кода листинга программы
- Включаем библиотеку stdio.h
- Создаем две переменные типа unsigned int - a и b
- С помощью функции scanf считываем время в формате часы:минуты и сохраняем его в переменные a и b
- Проверяем количество успешно считаных значений (должно быть равно 2)
- Если ввод некорректен - выводим сообщение об ошибке
False input.
и завершаем программу - Если ввод корректен - выводим сообщение
True input.
- Проверяем, что часы и минуты находятся в диапазоне от 0 до 59
- Если данные некорректны - выводим сообщение
Invalid data.
- Если данные корректны - выводим время в формате часы:минуты, ведущие нули при этом не отображаются
- Возвращаем 0, чтобы указать, что программа успешно завершилась
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д