• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

8.8 메뉴만들기 예제 질문입니다

22.04.08 12:39 작성 조회수 100

1

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

void count();


int main()
{
	char c = 0;
	int number = 0;
	while (1)
	{
		printf("Enter the letter of your choice: \n");
		printf("a. avengers       b. beep\n");
		printf("c. count          q. quit\n");

		
		

			if (getchar(c) == 'a')
			{
				printf("Avengers assemble!\n");
			}
			else if (getchar(c) == 'b')
			{
				printf("\a");
			}
			else if (getchar(c) == 'c')
			{
				count();
			}
			else if (getchar(c) == 'q')
			{
				exit(1);
			}
			else
			{
				printf("wrong choice, choose try again!\n");
			}
		
	}

	return 0;
	

}

void count()
{
	int number;
	printf("Enter an integer :");
	scanf("%d", &number);

	for (int i = 1; i <=number; i++)
	{

		printf("%d\n", i);
	}

	return 0;
}
그냥 결과화면만 본 상태에서 스스로 만든 코드입니다. switch문 대신 if문이 익숙하게 느껴져서 이렇게 만들었는데요 ㅠㅠ 기능이 실행되는 것은 정상적으로 되는데 메뉴에서 문자를 두번 입력하거나 혹은 엔터키를 여러번 눌러야지 실행이 되요 ㅠㅠ 무슨 문제일까요?? 일단 코드상 문제는 없어 보이는데 ㅠㅠ

답변 1

답변을 작성해보세요.

0

강민철님의 프로필

강민철

2022.04.08

안녕하세요, 아래와 같이 개행문자를 처리하는 코드가 없어서 그렇습니다.

질문자님이 문자를 입력할 때 개행문자까지 입력되어서 발생한 문제이지요.

char get_first_char(void) {
	int ch;
	ch = getchar();
	while (getchar() != '\n')
		continue;

	return ch;
}

 

 

질문자님 코드에 위 로직까지 추가한 코드는 다음과 같습니다.

이를 돌려보세요..!

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

void count();

char get_first_char(void) {
	int ch;
	ch = getchar();
	while (getchar() != '\n')
		continue;

	return ch;
}

int main()
{
	char c = 0;
	int number = 0;
	while (1)
	{
		printf("Enter the letter of your choice: \n");
		printf("a. avengers       b. beep\n");
		printf("c. count          q. quit\n");

		char input = get_first_char();

		if (input == 'a')
		{
			printf("Avengers assemble!\n");
		}
		else if (input == 'b')
		{
			printf("\a");
		}
		else if (input == 'c')
		{
			count();
		}
		else if (input == 'q')
		{
			exit(1);
		}
		else
		{
			printf("wrong choice, choose try again!\n");
		}

	}

	return 0;


}



void count()
{
	int number;
	printf("Enter an integer :");
	scanf("%d", &number);

	for (int i = 1; i <= number; i++)
	{

		printf("%d\n", i);
	}

	return 0;
}

 

 

감사합니다.

 

 

 

K Chan님의 프로필

K Chan

질문자

2022.04.08

헐랭,,, 개행문자가 문제였네여 ㅠㅠ 계속 고민하고 있었습니다 ㅠ 덕분에 해결됐어요 !! 감사합니다 ㅎㅎ