Подсчет дней в году(структура) - выход из цикла 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)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д