본문 바로가기
컴퓨터관련

C언어 - 내일 날짜 가져오기

by 기록이답이다 2016. 1. 20.
반응형
c언어로 내일 날짜를 가져와야 하는 일이 생겼습니다.
c언어는 잘 하지 못하는 관계로 나중을 위해서 여기에 적어놓을까 합니다.
#include <stdio.h>

int  isYunYear(int year);
 void PrintTomorrow(int y, int m, int d);

int isYunYear(int year) {
 // 윤년이란 4로 나누어 떨어지되 100으로는 나누어 떨어지지 않는 년도인데 1904년은 윤년이지만
// 1900년은 윤년이 아니다.
 // 또한 100으로 나누어 떨어지는 년도라도 400으로 나누어 떨어지면 윤년이 되는데 2000년은 윤년이다
int rtnNum = 0; 

if(year %4 == 0 && year %100 > 0) rtnNum = 1;
 else {
 if ((year %4 == 0 && year %100 == 0) && year %400 == 0) rtnNum = 1;
 }

return rtnNum;
 }

void PrintTomorrow(int y, int m, int d) {
 static int days[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
 if(isYunYear(y) == 1) days[2] = 29;

printf("%d > days[%d] || %d < 1 || %d > 12\n", d, m, m, m);
 if(d > days[m] || m < 1 || m > 12) {
 printf("wrong date");
 } else {
d++;
 if (d > days[m])
 {
 d = 1;
 m++;
 if(m == 13) {
 m = 1;
 y++;
 }
}
 printf("tomorrow-> %d / %d / %d \n", y, m, d);
 }
 }

void main() {

int mode, year, mon, day;

printf("mode 1 : PrintTomorrow\nmode 2 : Check YunYear\ninput mode : ");
 scanf("%d",&mode);

switch(mode) {
 case 1 : // 내일날짜 가져오기
printf("input year month day: ");
scanf("%d%d%d", &year, &mon, &day);
 PrintTomorrow(year, mon,day);
 break;
 case 2 : // 윤년체크
printf("input year: ");
 scanf("%d", &year);
 if(isYunYear(year) == 1) printf("%d => yun", year);
 else printf("%d => not yun", year);
 break;
 }
 }
 
 
반응형