실시간 정보라는 말을 오해했었나 봅니다. ^^
아무튼... 그렇게 실시간으로 콘솔에서 뽑아내어 화면에 보여주는것은 간단합니다만...
문제는 이 시간 기능을 그냥 단순히 어떤 프로그램의 부수적 기능중 하나로 사용하되 동시에 동작해야
한다면 일이 커지기 시작합니다. 예를들면 일기장 프로그램인데 구석에 시간이 초단위로 착착~ 올라가는 경우.
일단 단순히 콘솔 상에서 보여주는것은 무한 루프 돌면서 계속 같은 자리에 찍어주면 됩니다. ^^;
#include <stdio.h>
#include <dos.h>
#include <conio.h>
void main(void)
{
struct time t;
for( ;; )
for(int i = 0; i<=1000000; i++)
{
if( i < 1000000 )
continue;
gotoxy( 10, 10 );
gettime( &t );
printf( "current time is : %02d:%02d:%02d\n",
t.ti_hour, t.ti_min, t.ti_sec, t.ti_hund );
}
}
하지만...
루프 돌면서 화면에 계속 찍는것은 분명 생각해 보셨을 것입니다.
그럼 다른 대안은? 바로 쓰레드입니다.
결국 Thread를 사용하여 타임과 관련되는 별도의 동작을 처리해 주어야합니다.
그럴려면 콘솔 어플이라도 멀티쓰레드 지원에 채크~ ^^ 해주어야 하고 쓰레드 관련 Win32 API를 사용해야 합니다.
참고 할만한 자료를 추천하자면... Programming Windows Charles Petzold 20 챕터를 보세요.
왕초보... 님이 쓰신 글 :
: 말씀 감사하구요...,
: 그런데 제가 원하는 방법은 실시간으로 화면에 시간을 보여주게 하는 것인데요...,
: 이부분에서 설명이 조금 미흡했던 것 같습니다...
:
: 다시 말해서 보통 윈도우에서 보면 하단 트레이 부분에 시계표시 부분 있죠 ???
: 그 윈도우 시계처럼 초가 계속 올라가는 형태로 시간을 보여주게 하고 싶습니다...
:
: 다시 한번 도움주시면 미리 감사드리겠습니다...
:
: 남병철.레조 님이 쓰신 글 :
: : gettime() 함수를 사용하면 됩니다.
: : 의외로 간단히 나옵니다.
: :
: : #include <stdio.h>
: : #include <dos.h>
: :
: : void main(void)
: : {
: : struct time t;
: : gettime( &t );
: : printf( "current time is : %02d:%02d:%02d\n",
: : t.ti_hour, t.ti_min, t.ti_sec, t.ti_hund );
: : }
: :
: : 레퍼런스를 찾아보면 time관련 함수들이 있습니다.
: :
http://www.winapi.co.kr
: : 이곳의 C/C++ 레퍼런스에서 gettime을 보시면 위와같은 소스로 현재 시간을 얻을 수 있습니다.
: