소프트웨어/C

[2003년 기말 1번] 날짜 출력 예제

카켈 2007. 1. 19. 23:15


1. 목적 : C 현재 날짜/시간 출력 - 사용자 입력 X 자동출력

2. 출력 형식

오늘의 날까 : Jun 3 2003
현재의 시간 : 13:13:55
Press any key to continue

3. 추가 옵션

다음과 같이 출력을 하도록 하여라.
오늘의 날짜 : 2003년 6월 3일
현재의 시간 : 13시 51분 15초

4. 분석

날짜/시간 처리 - 자료형(time.h)
화면 출력 - printf(stdio.h)
Press any key to continue (기본 구문)

5. 해결 코드

#include <stdio.h>
#include <time.h>
int main()
{
 time_t nowtime;
 struct tm *now;
 char day[100]; // 포인터로 쓰니깐 문제되었다.
 time(&nowtime);
 now = localtime(&nowtime);
 strftime(day,100,"%b %d %Y",now);
 printf("오늘의 날짜 : %s\n",day);
 printf("현재의 시간 : %02d:%02d:%02d\n",now->tm_hour,now->tm_min,now->tm_sec);
 return 0;
}


 - 옵션 코드
#include <stdio.h>
#include <time.h>
int main()
{
 time_t nowtime;
 struct tm *now;
 time(&nowtime);
 now = localtime(&nowtime);
 printf("오늘의 날짜 : %02d년 %02d월 %02d일\n",1900 + now->tm_year,1 + now->tm_mon,now->tm_mday);
 printf("현재의 시간 : %02d시 %02d시 %02d초\n",now->tm_hour,now->tm_min,now->tm_sec);
 return 0;
}

6. 코드 분석

  우선은 시각을 계산할수 있는 자료 변수를 만들어 시간을 받고 그 변수를 제공하는 툴에서 만든 시간 함수를 씁니다. nowtime 은 예약되지 않은 시간 변수입니다. 비주얼베이직 처럼 미리 해주었으면 편했을텐데 찾는데 시간이 걸렸습니다. 그리고 마지막으로 날짜/시간 구조체를 만들고 거기에 집어 습니다.

  strftime 은 시간형태 구조체에서 원하는 형태의 자료로 뽑아 내어 해당 문자열 배열 변수(포인터는 연산 오류가 났습니다. 버퍼길이 때문에 생긴 듯합니다.)저장 시켜 출력을 뽑아 냅니다.

  옵션 코드는 포인터 구조체의 자료를 뽑아 내는 능력을 테스트 합니다. 원래 첫번째 코드는 strftime 만으로 해결 가능한데 특정 형식에 맞는 출력을 내는데 위 포인터 구조체의 자료를 뽑아 내는 능력이 필요합니다.

7. 추가 정보

CStdlib 설명(e) : http://www.utas.edu.au/infosys/info/documentation/C/CStdLib.html
시간관련처리 : http://www.winapi.co.kr/clec/cpp1/8-3-2.htm