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

 
Previous Post Perl 펄, 타이머 Timer 만들기 소스, 경과 시간 스톱와치BAT 실행창, 배치파일 실행하는 창은? Batch WindowCSS 파일 사용법, HTML 소스에 지정 방법; link rel stylesheet구글 스카이, 안드로메다 은하 관측 사진; 구글어스 Google Earth Andromed...구글어스 에러 해결법, 먹통(다운)과 실행이 되지 않는 문제; Google Earth Er...비디오카드 32비트 컬러로 설정 방법; 32bit 트루컬러 지정24비트 32 bit 자동 전환, 구글어스 실행 배치파일; Google Earth BAT구글스페이스, 구글어스로 우주 [천문, 별자리 사진] 보기 방법; Google Earth ...니콘 D300 크롭바디, Nikon D300 주요 사양니콘 D3 풀프레임 1:1 일대일 바디, Nikon D3 주요 사양

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

Sunday, August 26, 2007

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

0 Comments:

Post a Comment

<< Home RSS 2.0 feed

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