C언어입니다.
검색해보니 goto는 가급적 쓰지 말라고만 되어있길래 질문을 좀 올려봅니다.
scanf로 입력받은 값을 가지고 if문을 돌리다가 알맞은 값이 아니면 처음 입력받는 곳으로 돌려보내는 코드를
goto를 이용해서 짜보았습니다.
----------------------------------------------------------------------------------------
INP_S:;
printf("A또는 B를 입력하세요. : ");
scanf("%c",&selec);
printf("숫자를 입력하세요 : ");
scanf("%d",&num_1);
......................................중간 코드 생략..............................
if (selec=='A')
......................................중간 코드 생략...............................
else
{
printf("잘못입력되었습니다! 다시 입력하십시오.\n\n");
goto INP_S;
}
----------------------------------------------------------------------------------------
대강 이런 식입니다. 그런데 입력받은 값이 else에 걸려 goto에 걸리는 경우 레이블로 돌아가는것까진 문제가 없는데
다시 scanf로 입력을 받지않고 다음 문장으로 넘어가버립니다.
대략 다음과 같습니다.
----------------------------------------------------------------------------------------
A또는 B를 입력하세요. : C
숫자를 입력하세요 : 2
....생략....
잘못입력되었습니다! 다시 입력하십시오.
A또는 B를 입력하세요. : 숫자를 입력하세요. :
----------------------------------------------------------------------------------------
보시면 다시 입력하라고 나온다음에 A또는 B를 입력받는 부분을 건너 뛰고 숫자 입력으로 건너가버립니다.
이 코드 외에도 두번째 입력을 받는 것이 아니고 바로 결과값을 출력하는 코드의 경우에는
입력하라는 메세지가 무한으로 출력되는 문제가 발생합니다.
무엇이 잘못된건가요.. 어떻게 고쳐야 되는지 알려주세요.. ㅠ