2009. 9. 16. 20:28
우연히 고등학교 동창의 부탁으로 약 2주간 프로그래밍 과제를 도와주었습니다
(엄밀히 따지면 다 제가 짠거라는.. ㄷㅅㄷ <<?!)
군제대 이후에 C언어에 생각보다 많이 감이 떨어졌었는데
아는 한도 내에서 코드를 짜다보니까
코딩하는 감각은 좀 돌아온것 같네요. ^^
C++이나 .NET같은경우 아직 손도 안대봐서
GUI를 만드는법을 모르는데도, 그래픽 형식의 시계를 만들어야 하다보니
GUI를 대신할 문자조합에서 엄청난 양의 코드가 들어가 버렸습니다
지금 제가 봐도 좀 한심하다고 느껴질정도??
출력화면은 다음과 같습니다
나름 만들어서 실행시켜보니 뿌듯합니다. ㅎㅎ
당연히, 디스플레이 부분을 제외하면 코드가 엄청 짧은 편입니다
time.h 헤더파일을 불러오면, 헤더파일 내부의 구조체를 이용하여
간단하게 시스템의 현재시간을 불러올 수 있고,
이부분을 약간만 변형시켜서 조작해주면 이런 화면을 뽑을수 있습니다. ^^
time.h 헤더에서 시간에 사용되는 요소들
struct tm
{
int tm_sec; // Seconds
int tm_min; // Minutes
int tm_hour; // Hour (0--23)
int tm_mday; // Day of month (1--31)
int tm_mon; // Month (0--11)
int tm_year; // Year (calendar year minus 1900)
int tm_wday; // Weekday (0--6; Sunday = 0)
int tm_yday; // Day of year (0--365)
int tm_isdst; // 0 if daylight savings time is not in effect)
};
{
int tm_sec; // Seconds
int tm_min; // Minutes
int tm_hour; // Hour (0--23)
int tm_mday; // Day of month (1--31)
int tm_mon; // Month (0--11)
int tm_year; // Year (calendar year minus 1900)
int tm_wday; // Weekday (0--6; Sunday = 0)
int tm_yday; // Day of year (0--365)
int tm_isdst; // 0 if daylight savings time is not in effect)
};
제가 Dev C++로 코딩하기 때문에 컴파일러 특성을 약간 탑니다.
뭐 크게 상관은 없지만요 ㅎㅎ
#include<time.h>
#include<stdio.h>
#include<windows.h>
void gotoxy(int xpos, int ypos);
int select_num(int time_num,int pos_num);
int print_num(int printn, int loca_num);
int print_blank(void);
int main(void)
{
int x, i;
int time_num[3] ;
for(;;)
{
time_t timer;
struct tm *t;
timer = time(NULL);
t = localtime(&timer);
time_num[0] = t->tm_hour;
time_num[1] = t->tm_min;
time_num[2] = t->tm_sec;
gotoxy(0,3);
if(time_num[0]>=13)
{
time_num[0] = time_num[0]-12;
}
for(i = 0 ; i < 3 ; i++)
{
x = time_num[i];
select_num(x,i);
}
print_blank();
Sleep(1000);
}
System("PAUSE");
return 0;
}
출력부 함수까지 넣으면 상당히 복잡하고 지저분해 보이기 때문에 <<어이!#include<stdio.h>
#include<windows.h>
void gotoxy(int xpos, int ypos);
int select_num(int time_num,int pos_num);
int print_num(int printn, int loca_num);
int print_blank(void);
int main(void)
{
int x, i;
int time_num[3] ;
for(;;)
{
time_t timer;
struct tm *t;
timer = time(NULL);
t = localtime(&timer);
time_num[0] = t->tm_hour;
time_num[1] = t->tm_min;
time_num[2] = t->tm_sec;
gotoxy(0,3);
if(time_num[0]>=13)
{
time_num[0] = time_num[0]-12;
}
for(i = 0 ; i < 3 ; i++)
{
x = time_num[i];
select_num(x,i);
}
print_blank();
Sleep(1000);
}
System("PAUSE");
return 0;
}
출력부는 생략하구요.. (^^ 직접 한번 구현해 보세요, 제껀 부끄러워서. ㅠㅠ)
출력에 쓰이는 함수가 3개, 화면에 뿌려주는 좌표를 위해서 gotoxy()를 사용하였습니다.
time.h 헤더가 있으면 이렇게 간단하게 시간값을 불러와서 조정 할 수 있습니다.