Function won't call function [C]
Hello, I'm having a problem with my homework. The task is to write a program that will take time and date typed by user, and increase it by 1 minute. I should write 3 functions - first calls second function that updates time and calls third function, if time is 00:00.
Time update works, but date update does not.
My whole written code:
Code:
#include<stdio.h>
struct DateAndTime
{
struct date
{
int day;
int month;
int year;
}sdate;
struct time
{
int min;
int hour;
}stime;
}datums;
struct time stime = {1,1};
struct date sdate = {1,1,1};
struct DateAndTime calc_time(struct DateAndTime);
struct time time_update(struct time);
struct date date_update(struct date);
int main ()
{
printf("Ievadiet laiku hh:mm formata.\n");
scanf("%d:%d", &datums.stime.hour, &datums.stime.min);
printf("Ievadiet datumu dd/mm/yyyy formata.\n");
scanf("%d/%d/%d", &datums.sdate.day, &datums.sdate.month, &datums.sdate.year);
printf("\nIevaditais laiks ir %.2d:%.2d.\n", datums.stime.hour, datums.stime.min);
printf("Ievaditais datums ir %.2d.%.2d.%.2d.\n", datums.sdate.day, datums.sdate.month, datums.sdate.year);
calc_time(datums);
printf("\nAprekinatais laiks ir %.2d:%.2d.\n", datums.stime.hour, datums.stime.min);
printf("Aprekinatais datums ir %.2d.%.2d.%.2d.\n", datums.sdate.day, datums.sdate.month, datums.sdate.year);
return 0;
}
struct DateAndTime calc_time(struct DateAndTime datums)
{
time_update(datums.stime);
if(stime.min==00 && stime.hour==00)
{
date_update(datums.sdate);
}
return datums;
}
struct time time_update(struct time stime)
{
if(datums.stime.min>59 || datums.stime.min<0)
{
printf("Minutes ievaditas nepareizi.\n");
}
else if(datums.stime.hour>23 || datums.stime.min<0)
{
printf("Stundas ievaditas nepareizi.\n");
}
else datums.stime.min++;
if(datums.stime.min==60)
{
datums.stime.hour++;
datums.stime.min=00;
}
if(datums.stime.hour==24)
{
datums.stime.hour=00;
datums.stime.min=00;
}
return stime;
}
struct date date_update(struct date sdate)
{
if(datums.sdate.day<1 || datums.sdate.day>30)
printf("Dienas ievaditas nepareizi!\n");
else if(datums.sdate.month<1 || datums.sdate.month>12)
printf("Menesi ievaditi nepareizi!\n");
else if(datums.sdate.year<1)
printf("Gadi ievaditi nepareizi!\n");
else
datums.sdate.day++;
if(datums.sdate.day==31)
{
datums.sdate.month++;
datums.sdate.day=01;
}
if(datums.sdate.month==13)
{
datums.sdate.year++;
datums.sdate.month=01;
}
return sdate;
}
P.S. I should check if inputs are numbers only, so I tried including isdigit function from ctype.h library, but that didn't work either, after I was trying it for a good hour or so, but I kinda rage quit that...