#include <stdio.h>
int main(void)
{
int A;
char ch;
printf(\"몇 번 무기를 쓰시겠어요? (1-3) : \");
scanf_s(\"%d\",&A);
switch(A)
{
case 1:
printf(\"대검을 선택 하셨습니다.\\n\");
break;
case 2:
printf(\"소총을 선택 하셨습니다.\\n\");
break;
case 3:
printf(\"수류탄을 선택 하셔습니다.\\n\");
break;
default:
printf(\"무기를 다 버리셨습니다. 주먹으로 싸우세요!\\n\");
}
//-- 질문이요, 위에 것들 지우고 밑에 것만 실행하면 입력 되는데 같이 쓰니 위에 입력한거로 밑에 값도 자동으로 따라 가버리네요 문제점을 모르겠어요 ㅠ
printf(\"\\n\\n이제는 움직일 시간입니다.(w,s,a,d) : \");
scanf(\"%c\",&ch);
switch(ch)
{
case \'w\':
printf(\"앞으로 움직였습니다.\\n\");
break;
case \'s\':
printf(\"뒤로 움직였습니다.\\n\");
break;
case \'a\':
printf(\"왼쪽으로 움직였습니다.\\n\");
break;
case \'d\':
printf(\"오른쪽으로 움직였습니다.\\n\");
break;
default:
printf(\"잘 못 눌렀어 병신아!\\n\");
}
return 0;
}
1 누르고 엔터를 누르면 stdin 버퍼에는 1이랑 \\n 이 들어가 있어서 두번쨰 scanf에서 \\n을 입력받게 될겨. getchar()로 \\n을 건너띄워주면 해결될거다.
http://ideone.com/JNCeS
아니면 두번째 scanf에서 %c 앞에 스페이스 한칸 scanf(\" %c\",&ch) 식으로 해도 잘 작동할거야
감사해요^^
왜 그런지 이해는 안가지만;;
음 1을 입력하자나? 그때 키보드에서 뭐뭐 눌러? 1 누르고 엔터 누르지? 버퍼에 \'1\' 하고 \'\\n\' <- 이게 엔터 2개가 저장되있어 근데 scanf에서 1을 사용하지? 근데 엔터가 남앗자나 그래서 두번째 scanf문의 %c는 자동으로(남아있는) 엔터를 입력받아버리는거야