타이머 오류를 잡아주세요.
단화한
큐브 타이머를 구현하기 위해서,시간 흘러가는 별도의 모듈을 작성했는데요,시간 흘러가는 것이 어떤 때에는 정확하다가,어떤 때에는 너무 느리게 흐릅니다.이유를 몰라서 질문 드립니다.어떤 오류인지요?아니면 제가 잘못 구현한 것이라면,올바른 구현 방법을 알려주시면감사하겠습니다.Sleep()함수 말고,더 좋은 함수가 있는지요?
sleep.c 소스-----------#include stdio.h // printf()#include conio.h // kbhit(), getch()#include time.h // clock()#include windows.h // gotoxy(), system()
void gotoxy(int x, int y){ COORD coord; coord.X = x; coord.Y = y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);}
int main( void ){ int i, j, k, m; char ch = 0; clock_t start, finish;
double dResultTime = 0.0;
system( CLS ); start = clock();
for( k = 0; k = 24; k++ ) { gotoxy( 5, 3 ); printf( %2d, k ); printf( 시 );
for( j = 0; j 60; j++ ) { gotoxy( 10, 3 ); printf( %2d, j ); printf( 분 );
for( i = 0; i 60; i++ ) { gotoxy( 15, 3 ); printf( %2d, i ); printf( 초 );
for( m = 0; m 100; m += 1 ) { gotoxy( 20, 3 ); printf( %02d, m );
if( kbhit() ) { finish = clock(); ch = getch(); break; }
if( i == 10 && m == 50 ) Sleep( 9 ); else if( i == 20 && m == 50 ) Sleep( 9 ); else if( i == 30 && m == 50 ) Sleep( 9 ); else if( i == 40 && m == 50 ) Sleep( 9 ); else if( i == 50 && m == 50 ) Sleep( 9 ); else if( i == 59 && m == 50 ) Sleep( 9 ); else Sleep( 10 );
} // for( m)
if( ch != 0 ) { break; }
} // for( i )
if( ch != 0 ) { break; }
} // for( j )
if( ch != 0 ) { break; }
} // for( k )
dResultTime = (double)(finish - start) / CLOCKS_PER_SEC; printf( \n경과 시간 : %.3f \n, dResultTime ); system( PAUSE );
return 0;}
/* end of file */-------------------------
-
반혈
어떤분이 컨택트 스위칭이 발생한다고 하셨는데요, 아시는 분은 답변 부탁드립니다.