Skip to content

Instantly share code, notes, and snippets.

@fbentele
Last active December 21, 2015 11:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fbentele/71eeb99625bbc22932eb to your computer and use it in GitHub Desktop.
Save fbentele/71eeb99625bbc22932eb to your computer and use it in GitHub Desktop.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void getNextDay(char* input, char* output, int buffersize);
int a2i(const char *s);
/*
Demo c-code to calculate the next date.
2015 - F.Bentele
*/
int main(int argc, char const *argv[])
{
char input[11], output[11];
printf("Enter the date: ");
fgets(input, 100, stdin);
printf("The next day after %s is being calculated...\n", input);
getNextDay(input, output, 11);
printf("\nAnd the result is: %s\n", output);
return 0;
}
void getNextDay(char* input, char* output, int buffersize)
{
int i = 0;
int day = 0;
int month = 0;
int year = 0;
char* token = strtok(input,".");
if(token)
{
day = atoi(token);
printf("Day as int: %d\n", day);
i++;
while ((token = strtok(NULL, ".")))
{
if(i==1)
{
month = atoi(token);
printf("Month: %d\n", month);
}
if(i==2)
{
year = atoi(token);
printf("Year: %d\n", year);
}
i++;
}
}
switch(day)
{
case 31:
switch(month)
{
case 12:
day = 1;
month = 1;
year++;
break;
default:
day = 1;
month++;
break;
}
break;
case 30:
switch(month)
{
case 4:
case 6:
case 9:
case 11:
day = 1;
month++;
break;
default:
day++;
break;
}
break;
case 29:
if(month == 2 && year%4 == 0)
{
day=1;
month++;
} else {
day++;
}
break;
case 28:
if(month == 2){
day=1;
month++;
}
break;
default:
day++;
break;
}
char* string;
sprintf(string, "%d.%d.%d\n", day, month, year);
strncpy(output, string, buffersize-1);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment