mwultong Blog ... 프로그래밍 / 계산기

컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Sunday, August 26, 2007

C언어, 타이머 Timer 만들기 소스; 스톱워치 Stopwatch


C언어에서 간단한 타이머를 만드는 소스입니다. 사용자가 아무 키나 누를 때까지의 경과 시간을 측정하는 것입니다. 즉, "스톱와치"와 비슷합니다.

C에서 Timer 구현, 경과 시간 측정


소스 파일명: example.cpp
(비주얼C/C++ 2005나 그 이상의 컴파일러에서만 컴파일됩니다. 비주얼C/C++ 2003 이나 gcc에서는 소스를 수정해야 합니다.)
#include <stdio.h>
#include <conio.h> // _getch()
#include <time.h> // time()

void stopwatch(int onOff);
void secToHHMMSS(int secs, char* s, size_t size);

char timerBuffer[8 + 1]; // 06:17:20 등의 경과 시간 문자열이 저장될 버퍼 정의


int main(void) {

  stopwatch(1); // 1을 인수로 넣으면 타이머가 켜짐
  puts("타이머 ON! 아무키나 누르면 종료");


  // 유저가 아무 키나 누를 때까지 무한정 대기
  _getch(); // _getch() 는 getch() 의 보안 강화 버전


  stopwatch(0); // 0을 넣으면 타이머가 꺼지고 시간 문자열을 버퍼에 설정
  printf("타이머 OFF! 경과 시간은: [%s]\n", timerBuffer);


  return 0;
}


void stopwatch(int onOff) {
  static int oldTime; // stopwatch 함수가 종료되어도 값을 기억하는 "정적 지역 변수"

  if (onOff == 1) { // 타이머 켜기
    oldTime = (int) time(NULL);
  }

  if (onOff == 0) { // 타이머 끄고, 시분초를 timerBuffer 에 저장
    secToHHMMSS(
                (int) time(NULL) - oldTime,
                timerBuffer,
                sizeof(timerBuffer)
                );
  }

}


void secToHHMMSS(int secs, char* s, size_t size) { // 정수로 된 초(sec)를 입력 받아, "06:17:20" 등의 형식의 문자열로 시분초를 배열에 저장
  int hour, min, sec;

  sec  = secs % 60;
  min  = secs / 60 % 60;
  hour = secs / 3600;

  sprintf_s(s, size, "%02d:%02d:%02d", hour, min, sec);
}


위의 소스에서 sprintf_s 라는 함수는 sprintf 의 보안 강화 버전입니다. 비주얼C 2005나 그 이상의 컴파일러에서만 사용 가능합니다. s_sprintf 가 아니라 sprintf_s 입니다.


컴파일 및 실행 결과 화면:
D:\Z>cl example.cpp
example.cpp

D:\Z>example.exe
타이머 ON! 아무키나 누르면 종료
타이머 OFF! 경과 시간은: [00:00:02]

D:\Z>example.exe
타이머 ON! 아무키나 누르면 종료
타이머 OFF! 경과 시간은: [00:01:53]

D:\Z>example.exe
타이머 ON! 아무키나 누르면 종료
타이머 OFF! 경과 시간은: [24:00:05]

D:\Z>


맨 마지막의 24:00:05 라는 결과는 컴퓨터 시계를 하루 앞으로 당겨서 강제로 출력한 결과입니다.




▶▶ C언어] 현재 날짜/시간/년월일,시분초 구하기 함수(오늘 날짜 시간): Current Date, Time

컵라면 타이머 (온라인):
▶▶ 컵라면 타이머; 인터넷 요리용 타이머, 모래시계 Cooking Timer

스톱워치 (온라인 버전 스톱와치):
▶▶ 스톱워치, 초시계, 온라인 스톱와치, 100분의 1초 Stopwatch




tag: cpp
C언어 | C/C++ (Visual C++)

0 Comments:

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top