개발 기록/C Language

[C언어] Sleep함수, system함수, clock함수, _kbhit함수 알아보기

우준성 2021. 4. 29. 11:52

Sleep()

말 그대로 정해진 시간동안 잠자게 하는(?) 함수

일정 시간동안 프로그램을 정지시킬 때 사용하는 함수

windows.h헤더파일 안에 있다.

ms(밀리세컨드) 단위이기 때문에 1초를 정지시키기 위해서는 Sleep(1000) 으로 입력해야 한다.

#include <stdio.h>
#include <time.h>
#include <

int main(void)
{
	while (1)
	{
		printf("hello!\n");
		Sleep(1000);
	}

	return 0;
}

tmi

이 함수가 왜 C언어에서 time.h 헤더파일에 있지 않고 windows.h 헤더파일에 포함되어 있느냐?

그 이유는 "Sleep함수는 C언어의 런타임 함수가 아닌 Windows 운영체제의 API 함수이기 때문이다."라고 설명할 수 있다.


system()

시스템 명령을 수행한다.

windows.h헤더파일 안에 있다.

system() 괄호 안에 "cls"를 입력하면 화면 초기화, "notepad"를 입력하면 메모장 실행 등등 여러 기능으로 활용할 수 있다.

#include <stdio.h>
#include <time.h>

int main(void)
{
	printf("Hello!");
	system("cls"); // 콘솔 화면 초기화
	system("pause"); // 키를 입력하면 계속 진행
	system("notepad"); // 메모장 프로그램 실행

	return 0;
}

clock()

시스템 명령을 수행한다.

time.h헤더파일 안에 있다.

Sleep() 처럼 clock() 함수도 ms(밀리세컨드) 단위라서

초 단위로 사용하려면 clock() / 1000을 해주어야 한다.

#include <stdio.h>
#include <time.h>
#include <windows.h>

int main(void)
{
	while (1)
	{
		printf("%d초", clock() / 1000 + 1); // 1초가 되기 전에 ms단위를 1000으로 나누면 0이 되기 때문에
		Sleep(1000);						// 1을 더해줬습니다
		system("cls");
	}

	return 0;
}

_kbhit()

이 함수의 이름을 자세히 보면 뜻을 알 수 있다.

바로 keyboard hit, 즉 키보드를 눌렀을 때 0이 아닌 값을 반환, 누르지 않았을 때는 0을 반환한다.

conio.h헤더파일 안에 있다.

#include <stdio.h>
#include <conio.h>

int main(void)
{
	while (1)
	{
		if (_kbhit())
		{
			printf("키보드 입력이 감지됨\n");
			break;
		}
		else
		{
			printf("키보드 입력이 감지되지 않음\n");
		}
	}

	return 0;
}

 

반응형