본문 바로가기

Study_C, C++/홍정모의 따라하며 배우는 C언어

[홍정모의 따라하며 배우는 C언어] 8.8 메뉴 만들기 예제

728x90

8.8 메뉴 만들기 예제

메뉴가 나오는 프로그램

 

#pragma warning (disable:4996)
#include <stdio.h>


main()
{
	char input, buffer;
	int i, j;
	while (1) {

		printf("Enter the letter of your choice : \n");
		printf("a. avengers\tb. beep\nc. count\tq. quit\n");
		input = getchar();
		buffer = getchar();

		if (input == 'a')
			printf("Avengers assemble!\n");
		else if (input == 'b')
			printf("\a");
		else if (input == 'c') {
			printf("Enter an integer : \n");
			scanf("%d", &i);
            buffer = getchar();
			for (int j = 1; j <= i; j++)
				printf("%d\n", j);
		}
		else if (input == 'q')
			exit();
	}
}

 

Enter the letter of your choice :
a. avengers     b. beep
c. count        q. quit
(a 입력)
Avengers assemble!
Enter the letter of your choice :
a. avengers     b. beep
c. count        q. quit
(b 입력) : 벨소리 울림
Enter the letter of your choice :
a. avengers     b. beep
c. count        q. quit
(c 입력)
Enter an integer :
(3 입력)
1
2
3
Enter the letter of your choice :
a. avengers     b. beep
c. count        q. quit
(q 입력)
종료

 

 

#pragma warning (disable:4996)
#include <stdio.h>

char get_choice();
char get_first_char();		
int get_integer();			
void count();

main()
{
	int user_choice;

	while ((user_choice = get_choice()) != 'q') {		// q가 입력되면 while문 종료
		switch (user_choice) {
		case 'a':
			printf("Avengers assemble!\n");
			break;
		case 'b':
			putchar('\a');
			break;
		case 'c':
			count();
			break;
		default:
			printf("Error with %d.\n", user_choice);
			exit(1);	// 오류가 있음을 의미. 개발 과정에서 발생하면 
            				// 안되는 일이 발생하였을 때 메세지 출력
			break;
		}
	}
}		

char get_choice() {

	int user_input;

	printf("Enter the letter of your choice : \n");
	printf("a. avengers\tb. beep\nc. count\tq. quit\n");

	user_input = get_first_char();

// 입력받은 글자가 a, b, c, q 중 하나인가 확인하여 입력이 제대로 들어오지 않으면 다시 입력을 하게 함
	while ((user_input < 'a' || user_input>'c') && user_input != 'q') {		
		printf("Please try again.\n");										
		user_input = get_first_char();
	}
	return user_input;
}

char get_first_char() {			// 첫번째 글자만 입력받음
	int ch;

	ch = getchar();
	while (getchar() != '\n')	// 입력 버퍼를 지우는 부분
		continue;

	return ch;
}

void count() {
	int n, j;

	printf("Enter an integer : \n");
	n = get_integer();
	for (int j = 1; j <= n; j++)
		printf("%d\n", j);

	while (getchar() != '\n')		// 입력 버퍼를 지우는 부분
		continue;
}

int get_integer() {
	int input;
	char c;

// 입력 받은 변수의 갯수가 하나가 아닐 때 while문에 들어감 
// 정수가 아닌 값이 입력되면 해당 scanf문은 변수를 하나도 입력받지 못하므로 while문으로 들어감
	while (scanf("%d", &input) != 1) {		
		while ((c = getchar()) != '\n')
			putchar(c);
		printf(" is not an integer.\nPlease try agian.");		// 입력을 다시 하게 함
	}
	return input;
}

 

Output : 위와 동일

 

  • 위와 같이 사용자의 입력이 유효한지 까지 검토를 해서 안정적으로 작동하는 프로그램을 만들어야 한다
  • GUI (Graphic User Interface)도 내부는 위와 같이 콘솔창을 이용해서 프로그램을 만든 것과 비슷

 

 

 

 

 

 

 


https://www.inflearn.com/course/following-c/dashboard

 

홍정모의 따라하며 배우는 C언어 - 인프런 | 강의

'따배씨++'의 성원에 힘입어 새롭게 개발된 C 언어로 시작하는 프로그래밍 입문 강의입니다. '따배씨'와 함께 프로그래밍 인생을 업그레이드 해보세요., - 강의 소개 | 인프런...

www.inflearn.com