#include
#include
struct time{
unsigned int ti_hour;
unsigned int ti_min;
unsigned int ti_sec;
};
void gettime(struct time *);
void gotoxy(int x, int y);
void main()
{
int i = 1; //카운터 변수
unsigned int cti_sec; //이전생성된 초를 저장할 임시 저장소
struct time sttime; //시간 구조체
gettime(&sttime); // 시간을 구해옴
gotoxy(30, 10); //중간쯤 위치에
printf("* %u 시 %u 분 %u초 *\n", sttime.ti_hour, sttime.ti_min, sttime.ti_sec); //출력
cti_sec = sttime.ti_sec; //출력하고 그 시간 저장
while(1){
gettime(&sttime); //시간을 구해옴
gotoxy(30, 10+i); //찍힌 다음 위치에 찍히게 옴기고
if(cti_sec != sttime.ti_sec){ //새로 받아온 시간이 저장되어있던것과 다르면
printf("* %u 시 %u 분 %u초 *\n", sttime.ti_hour, sttime.ti_min, sttime.ti_sec); //출력하고
i++; //카운터변수 증가
cti_sec = sttime.ti_sec; // 출력댄 시간 저장
}
if(i == 10) {break;} //카운터 변수 가 10이면 종료
}
}
void gettime(struct time *p) // 원본 데이터를 변환할수 있도록 Call by pointer 기법 사용
{
char temp[30];
char *cp;
_strtime( temp ); // temp char배열 안에 00:00:00(시:분:초)순의 문자열 상태로 저장
cp = strtok(temp, ":"); // temp배열의 첫번째 ':'까지 문자열를 끊어내어 cp에게 시에 해당하는 문자열의 시작주소를 리턴
p->ti_hour = atoi(cp); // 끊어낸 시에 해당하는 문자열을 정수형 데이터로 변환하여 p->ti_hour에 저장
cp = strtok(NULL, ":"); // temp배열의 두번째 ':'까지 문자열를 끊어내어 cp에게 분에 해당하는 문자열의 시작주소를 리턴
p->ti_min = atoi(cp); // 끊어낸 분에 해당하는 문자열을 정수형 데이터로 변환하여 p->ti_min에 저장
cp = strtok(NULL, ":"); // temp배열의 세번째 ':'까지 문자열를 끊어내려하나 ':'은 나타나지 않고 문자열이
// 끝나게 되므로 남은 문자열 전체를 리턴한다 즉, cp에게 초에 해당하는 문자열의 시작주소가 리턴한다.
p->ti_sec = atoi(cp); // 끊어낸 초에 해당하는 문자열을 정수형 데이터로 변환하여 p->ti_sec에 저장
}
void gotoxy(int x, int y)
{
COORD Pos = {x - 1, y - 1};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), Pos);
}
댓글 없음:
댓글 쓰기