85.24 코드 실행을 늦추기
_sleep, sleep, usleep 함수를 사용하면 일정 시간 동안 코드의 실행을 늦출 수 있습니다(Windows에서 _sleep 함수는 stdlib.h, 리눅스에서 sleep, usleep 함수는 unistd.h 헤더 파일에 선언되어 있습니다). 여기서 밀리초는 1/1000초, 마이크로초는 1/1000000초입니다.
- _sleep(밀리초): Visual Studio
- void _sleep(unsigned long _Duration);
- sleep(초): 리눅스
- unsigned int sleep (unsigned int __seconds);
- usleep(마이크로초): 리눅스
- int usleep (__useconds_t __useconds);
다음은 "There is no place like home. The Wizard of Oz" 문장을 0.5초에 한 글자씩 출력합니다.
sleep.c
#define _CRT_OBSOLETE_NO_WARNINGS // 구식 함수를 사용했을 때 발생하는 에러 방지 #include <stdio.h> #include <stdlib.h> // _sleep 함수가 선언된 헤더 파일 #include <string.h> //#include <unistd.h> // 리눅스에서 usleep 함수가 선언된 헤더 파일 int main() { char *script = "There is no place like home.\nThe Wizard of Oz"; int length = strlen(script); for (int i = 0; i < length; i++) { printf("%c", script[i]); // fflush(stdout); // 리눅스에서는 문자 하나씩 출력한 뒤 usleep으로 기다리려면 // 출력 버퍼를 비워야 함 // usleep(500000); // 리눅스에서 0.5초를 기다릴 때(-std=gnu99 옵션 사용) _sleep(500); // 0.5초 } return 0; }
실행 결과
There is no place like home. (0.5초에 한 글자씩 출력됨) The Wizard of Oz
for 반복문으로 반복하면서 문자열 script의 문자를 하나 출력한 뒤 _sleep 함수로 0.5초 대기하도록 만들었습니다. 이렇게 하면 0.5초에 문자가 하나씩 출력됩니다. 리눅스에서는 usleep 함수를 사용해야 하며 리눅스에서는 문자 하나씩 출력한 뒤 usleep으로 기다리려면 fflush 함수로 출력 버퍼를 비워야 합니다.