47.6 심사문제 관련하여 질문드립니다
, park min-ju님이 작성scanf("%d %s\n", &a, s);
위와 같이 코드를 작성하였고 심사문제는 통과하였고
인터넷 컴파일러를 사용할 경우 정상적으로 작동 하지만
비주얼 스튜디오 2017을 사용할경우 정수(a), 문자열(s)과 엔터를 입력하고 다른 잡문자와 엔터를 한번 더 입력해야 결과가 출력됩니다.
원인을 알수 있을까요?
(도장_ 관리자님이 수정함 - 원문 제출일: 2018년 12월 26일, 수요일, 오후 8:54)
Re: 47.6 심사문제 관련하여 질문드립니다
, 도장_ 관리자님이 작성Unit 11.2에 scanf_two_integer.c의 scanf 부분과 문의한 코드의 scanf 부분을 비교해보세요.
scanf는 입력 서식의 일치를 판단합니다. scanf가 끝나려면 입력 서식이 일치해야 합니다.
문자를 더 입력해야 끝나는 게 아닙니다. scanf에 \n이 있으니 사용자가 엔터를 더 입력해야 서식 입력이 끝나는 겁니다.
"숫자 문자열" 입력하고 엔터를 치면 숫자, 문자열 입력 서식이 완료된 것이고,
"\n"이 아직 남아 있으니 사용자가 엔터를 한 번 더 입력할 때까지 scanf가 실행되는 중인 겁니다.
scanf에 \n을 넣는 건 대부분의 입문자가 하는 실수입니다. ^^