Подсчет дней в году(структура) - выход из цикла while - C (СИ)
Формулировка задачи:
Добрый день!Спустя небольшое время решил возобновить изучение СИ,остановился на структурах.
Задание такое:задать дату,и программа должна подсчитать количество дней(учитывая високосность).все работает,программа считает,но для задание даты я воспользовался таким форматом для scanf,но не получается грамотно выйти из цикла while при неверном наборе(если введу букву по ошибке или намеренно).Подскажите,как можно это исправить?заодно,посоветуйте,что можно изменить.Спасибо
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int check(int,int,int);
struct month{
int num_Mon;
char name_MNTH[10];
char ABR[4];
int days;
};
struct month MONTHS[12] = {
{1,"January","JAN",31},
{2,"February","FEB",28},
{3,"March","MAR",31},
{4,"April","APR",30},
{5,"May","MAY",31},
{6,"June","JUN",30},
{7,"July","JUL",31},
{8,"August","AUG",31},
{9,"September","SEP",30},
{10,"October","OCT",31},
{11,"November","NOV",30},
{12,"December","DEC",31},
};
int main(void)
{
int input_day;
int input_mon;
int input_yar;
int index;
int total;
int days_amount;
printf("enter date for calculate(for example 01/12/1999):\n");
while (scanf("%2d%*c%2d%*c%4d",&input_day,&input_mon,&input_yar) != 1)
{
if (input_yar % 4 == 0 )
MONTHS[1].days = 29;
else
MONTHS[1].days = 28;
days_amount = check(input_day,input_mon,input_yar);
printf("sum until %s - %d\n",MONTHS[input_mon - 1].name_MNTH,days_amount);
}
return 0;
}
int check(int D,int M,int Y)
{
int index;
int total_mid = 0;
int total;
for (index =1;index < M;index++)
total_mid+=MONTHS[index-1].days;
total= total_mid+D;
return total;
}Решение задачи: «Подсчет дней в году(структура) - выход из цикла while»
textual
Листинг программы
while (scanf("%2d%*c%2d%*c%4d",&input_day,&input_mon,&input_yar) == 3)