C 날짜범위를 입력받는 방법
조회수 657회
달력 프로그램을 만드는 중인데 범위를 입력하고 싶을때는 scanf 함수를 사용하는게 아닌가요? 2021.05.24-2021.08.09처럼 범위를 입력하면 그 달에 맞는 달력을 출력할려고 하는데
scanf_s("%d.%d.%d-%d.%d.%d,&year,&month,&day,&year,&month,&day)
로 하니깐 아예 프로그램이 실행이 안되더라고요 혹시 달력 범위를 입력하는게 따로 있나요?
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
"2021.05.24-2021.08.09" 형태를 날짜로 변환하시길 원하신다면 아래 코드를 참고해 보세요
scanf 로 각각의 값을 입력 받기 보다 문자열 전체로 입력 받은 후 strptime 으로 변환하는 게 더 편합니다.
물론 입력의 형태가 날짜가 2개 들어 있기 때문에 우선은 ' - ' 문자를 기준으로 2개로 split 해주는 게 좋겠죠?
#include <stdio.h> #include <time.h> void main () { struct tm t; const char* date = "2019-10-21"; // 날짜 문자열: 2019년 10월 21일 const char* time = "18:16:24"; // 시간 문자열: 18시 16분 24초 char* ret=NULL; char buf[256]; ret = strptime(date, "%Y-%m-%d", &t); // 날짜 문자열을 tm 구조체로 ret = strptime(time, "%H:%M:%S", &t); // 시간 문자열을 tm 구조체로 strftime(buf, sizeof(buf), "%Y년 %m월 %d일", &t); // tm 구조체에서 날짜를 buf 로 puts(buf); strftime(buf, sizeof(buf), "%H:%M:%S", &t); // tm 구조체에서 시간을 buf 로 puts(buf); }
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력