Проверка на корректный ввод времени - C (СИ)

Формулировка задачи:

Всем доброго времени суток. И так нужно проверить на валидный ввод времени(min:sec): Пример 3:04; 15:34; 59:59; Я делаю так:
scanf("%d:%d", &a, &b);
Я не знаю точно, что и в каком случае возвращает scanf, но к примеру на ввод одного числа можно проверить так:
if (scanf("%d", &a) != 1)
{
    printf("***Ошибка!!!***\n");
    return;
}
Следующий код таким же макаром не работает
if (scanf("%d:%d", &a, &b) != 1)
{
    printf("***Ошибка!!!***\n");
    return;
}
Если считывать scanf("%d:%d", &a, &b); и вводить не цифры, а символы то все проходит успешно...(( Как же мне проверить то, что человек ввел не буквы а числа? Добавлено через 4 минуты Или может есть более адекватный и красивый вариант? Добавлено через 37 минут scanf("%d:%d", &a, &b);- этот вариант вообще не правильный так как если я введу к примеру "1:02" то получу в а=1 и в b=2(так как 02 это число 2)

Код к задаче: «Проверка на корректный ввод времени - C (СИ)»

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;
}

13   голосов, оценка 3.615 из 5


СОХРАНИТЬ ССЫЛКУ