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
'Study_C, C++ > 홍정모의 따라하며 배우는 C언어' 카테고리의 다른 글
[홍정모의 따라하며 배우는 C언어] 9.1 함수가 필요할 때 ~ 9.2 함수의 프로토타입 (0) | 2022.05.29 |
---|---|
[홍정모의 따라하며 배우는 C언어] 8.9 텍스트 파일 읽기 (0) | 2022.03.23 |
[홍정모의 따라하며 배우는 C언어] 8.7 입력 스트림과 숫자 (0) | 2022.03.07 |
[홍정모의 따라하며 배우는 C언어] 8.6 입력 확인하기 (0) | 2022.03.06 |
[홍정모의 따라하며 배우는 C언어] 8.4 사용자 인터페이스는 친절하게 ~ 8.5 숫자와 문자를 섞어서 입력받기 (0) | 2022.03.03 |