티스토리 뷰

 C언어 시간 지연함수. 프로그래머는 언어의 내장함수를 전부 외우고 있을 수 없습니다. 한가지 언어만을 오랫동안 사용했더라도 전부 외울수 없고, 장담컨데 C언어를 개발하신분이라고 하더라도 전부 외우지 못하고 있습니다. 그렇기때문에 좋은 프로그래머의 자질 중 한가지는 최대한 다양한 종류의 함수를 사용해보고, 원하는 자료를 빨리 찾는 능력이 필요하다고 생각합니다. 더군다나 프로그래머는 한가지 언어만을 사용하는 것이 아니기때문에 원하는 자료를 빨리 찾는 것이 중요하죠.

 오늘은 C언어에서 시간을 지연시키는 기능을 가진 '딜레이(Delay)함수'에 대해 소개하려고합니다. 아두이노(Arduino)에서는 delay()이라는 내장함수를 이용하여 편하게 시간지연을할 수 있지만 C언어에서는 살짝 다릅니다. 

◎ C언어 시간지연함수


 C언어 많은 내장함수를 포함하고 있고, 이 내장함수를 모두 사용해보기란 현실적으로 불가능합니다. 따라서 다양한 종류의 내장함수를 찾을 수 있고, 직접 익혀보는 것이 프로그래밍 실력을 향상시키는데 중요한 요소입니다.


 C언어에서 시간지연을 구현하기위해서는 <windows.h> 헤더파일이 필요합니다. 기본적으로 제공되는 헤더파일이기때문에 전처리기로 불러다 사용하시면 됩니다. windows.h에 포함되어있는 Sleep()내장함수를 이용하여 시간지연을 구연할 수 있습니다. 여기서 중요한 것은 처음 s가 대문자로 시작된다는 것입니다. 예를 위해 helloWorld가 출력된 후 3초뒤에 bye가 출력되는 코드를 구현해보겠습니다.

1) 일반적인 코드

1
2
3
4
5
6
7
8
#include <stdio.h>
 
int main( void ){
    
    printf"helloWorld\n" );
    printf"bye\n" );
    return 0;
}


  코드의 구현 결과는 helloWolrd와 bye가 동시에 나오는 것을 확인하실 수 있습니다. 그렇다면 이번에는 시간지연 함수를 사용해 볼까요?


2) 시간지연 함수(Sleep())

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
#include <windows.h>
 
int main( void ){
    
    printf"helloWorld\n" );
    Sleep(3000);
    printf"bye\n" );
    return 0;
}

전처리기로 windows.h헤더파일을 불러온 후 딜레이 시키고 싶은 구간에서 Sleep();함수를 선언하여 주면됩니다. 괄호안에 들어가는 숫자가 지연시킬 초인데요, 한가지 주의하실점이 1/1000초입니다. 즉 1sec = 1000이 되는 것이지요. 따라서 3초를 지연하기 위해서는 3000을 입력하시면 됩니다.


최근에는 C언어의 사용빈도가 높지는 않지만 아직도 한국에서는 처음 배우는 프로그래밍 언어로 대다수가 C언어를 선택하고 있습니다. 그만큼 C언어는 모든 언어를 배우기 위한 기초가 되는 것이고, C언어를 토대로 개발된 언어들이 많기 때문인 것입니다. 최근에는 애플의 스위프트(Swift)등 새로운 언어들이 기존보다 빠른속도로 나오고 있지만 기본을 확실히 익히고 새로운 언어에 도전하는 것이 바람직하다고 생각합니다.

※공감은 블로거에게 큰힘이 됩니다.

댓글