CHAPTER 5 : switch

[C언어 예제] getchar()이용해 switch구문 이해하기

A부터 C언어까지 2020. 11. 13. 10:00

 

안녕하세요, A부터 C언어까지 입니다. 이번 포스팅에서는 switch구문에 대해 더 이해해보도록 하겠습니다.

getchar() 함수를 이용해 문자를 입력받고 switch구문을 통해 어떤 문자가 출력되는지 확인해 보도록 하겠습니다.

 


 

 

다음의 코드는 무슨 코드인지 생각해봅시다.

 

코드

#include<stdio.h>
int main(void)
{
	char c;
	while (1)
	{
		c = getchar();
		switch (c)
		{
		case'a':
		case'e':
		case'i':
		case'o':
		case'u':
			putchar(c);
		}
	}
}

 

랜덤으로 입력한 문자열에서 모음만이 분류되어 출력되는것을 볼 수 있습니다. 어떤 원리일까요?

 

 

a,e,i,o,u가 문자열에 포함되었을때 : break가 없으므로 문자열 전체를 스캔하며 c에 저장했다가 마지막 출력에서 한꺼번에 출력되게 됩니다. 따라서 이 코드는 모음만 출력하는 프로그램이라고 할 수 있겠습니다.

 

다른 예제도 한번 살펴보도록 하겠습니다. 다음의 코드는 어떤 코드일까요?

 

 

 

코드

#include<stdio.h>
int main(void)
{
	int i[5], pass = 0, fail = 0;

	for (int a = 0; a < 5; a++)
	{
		printf("Enter Result (1=pass, 2=fail) : ");
		scanf_s("%d", &i[a]);
	}

	for (int b = 0; b < 5; b++)
	{
		switch (i[b])
		{
		case 1:
			pass++;
			break;

		case 2:
			fail++;
			break;
		}
	}
	printf("Passed : %d \nFailed : %d", pass, fail);

}

 

printf문을 보니 pass/fail의 수를 세는 프로그램같아보입니다. 자세히 살펴봅시다.

 

 

12112를 하나씩 입력했을 때 다음과 같은 결과가 출력되는 것을 볼 수 있습니다.

 

이번 포스팅에서는 두 개의 예시를 통해 switch문에 대한 구체적인 이해를 해 보았습니다. 

다음 포스팅에서는 switch구문의 구체적인 활용예시에 대해 더 알아보겠습니다.