본문 바로가기
프로그래밍/C

C, C++ ] system("pause") 대신 사용할 수 있는 입력을 기다리는 방법

by eteo 2023. 7. 11.
반응형

 

 

system("pause") 대신 사용할 수 있는 입력을 기다리는 기능을 구현할 방법을 생각해보자.

 

 

_getch()를 사용해 Any key 입력 대기 (Windows Only)

 

_getch()는 입력이 들어올 때까지 블로킹되며, 콘솔에서 키 입력을 하나 읽는다.

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

int main(void) {
    printf("Press any key to continue...\n");
    (void)_getch();
    return 0;
}

 

 

 

 

C, getchar()를 사용해 Enter 입력 대기 (플랫폼 독립적)

 

getchar()는 표준 입력 버퍼에서 문자 1개를 읽는 함수로, 콘솔은 기본적으로 라인 버퍼(line buffered)이므로 사용자가 엔터를 눌러야 입력이 전달된 후 동작한다.

#include <stdio.h>

int main(void) {
	printf("Press Enter to continue...\n");
	int ch;
	while ((ch = getchar()) != '\n' && ch != EOF) {}

	return 0;
}

 

 

 

 

 

C++, cin.ignore()를 사용해 Enter 입력 대기  (플랫폼 독립적)

 

cin.ignore(n, delim)는 입력 스트림에서 최대 n개의 문자를 delim(ex. '\n')이 나올 때까지 건너뛰는 함수로, Enter 입력을 기다리고, Enter가 눌렸을 때 입력 버퍼를 정리하는 데 적합하다.

#include <iostream>

int main(void)
{
	std::cout << "Press Enter to continue..." << std::endl;
	std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

	return 0;
}

 

 

 

반응형

'프로그래밍 > C' 카테고리의 다른 글

C ] Data Types Range  (0) 2023.09.15
extern "C" {}  (0) 2023.07.18
C ] 포인터와 const  (0) 2023.05.30
C ] 비트필드(Bit Field)와 공용체(Union) 사용  (0) 2023.05.29
C언어 ] setjmp(), longjmp()  (2) 2023.05.07