scanf를 통해 입력을 받을때 

문자나 문자열을 입력받으면 오류가 발생할때가 있습니다..

int main() {

	int a, b;
	
	scanf("%d", &a);
	scanf("%d", &b);
	
	printf("첫번째 의 값은 ==> %d", a);
	printf("두번째 의 값은 ==> %d", b);
	

}

이렇게 정수 두개만을 입력받을때는 문제가없습니다.

하지만 추가로 문자를 입력받으면 어떨까요?

 

int main() {

	int a, b;
	char c;

	scanf("%d", &a);
	scanf("%d", &b);
	scanf("%c", &c); //추가

	printf("첫번째 의 값은 ==> %d\n", a);
	printf("두번째 의 값은 ==> %d\n", b);
	printf("세번째 의 값은 ==> %c\n", c); //추가
	

}

놀랍게도 입력할 기회도 주지 않습니다.

문제는 함수를 통해 입력하고 엔터키를 칠때 이 엔터를 그냥 행위가 아닌 '\n'의 문자로 받아들이는 것에서 발생합니다.

버퍼에 남아있는 '\n'의 값을 초기화 해주기 위해선 getchar() 함수를 scanf 직전에 넣어주면됩니다

int main() {

	int a, b;
	char c;

	scanf("%d", &a);
	scanf("%d", &b);
	getchar(); //엔터값 제거
	scanf("%c", &c);

	printf("첫번째 의 값은 ==> %d\n", a);
	printf("두번째 의 값은 ==> %d\n", b);
	printf("세번째 의 값은 ==> %c\n", c);
	

}

성공적으로 입력,출력 했습니다!

+ Recent posts