인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

doosan1118님의 프로필 이미지
doosan1118

작성한 질문수

홍정모의 따라하며 배우는 C언어

8.8 메뉴 만들기 예제

자꾸 c를 누르면 숫자 입력을 2번 기다립니다...ㅠ

작성

·

192

0

#include <stdio.h>

char get_choice();

void get_number();

int main()

{

char c;

while ((c = get_choice()) != 'q')

{

if (c == 'a')

printf("Avengers Assemble!\n");

if (c == 'b')

printf("\a");

else if (c == 'c')

get_number();

}

return 0;

}

char get_choice()

{

char choice;

printf("Enter the letter of your choice:\n");

printf("a. avengers b. beep\n");

printf("c. count q. quit\n");

choice= getchar();

while (getchar() != '\n')

continue;

return choice;

}

void get_number()

{

int num;

printf("Enter an integer :\n");

scanf("%d\n", &num);

for (int j = 1; j <= num; j++)

printf("%d\n", j);

}

a,b,q는 저의 의도대로 잘 작동하는데

c를 누르면 숫자 입력을 두번 기다립니다

왜 이런것인가요>>

답변 1

0

입력값에 개행 ('\n')이 포함되어 있어 그렇습니다.

while (c = getchar()) != '\n') 코드의 의미를 잘 생각해보세요~!

doosan1118님의 프로필 이미지
doosan1118
질문자

입력이 c이면 실행되는 get_choice()함수에서 전 scanf함수로 하나의 정수를

불러왔습니다. scanf에서도 '\n'를 신경써줘야 하나요?

지금까지 scanf에 입력을 하고 엔터를 치면 그 값이 변수의 메모리에 들어갔는데

'\n'에 의해서 한번더 실행되는 이유를 잘 모르겠습니다

doosan1118님의 프로필 이미지
doosan1118

작성한 질문수

질문하기