2014-11-04 3 views
-2

scanf와 무시 "유형 1 일 번호 :"처음의 printf 후 권리를 . 어떤 아이디어?C 컴파일러는이 코드에 문제가

+0

당신이'do_math'에 무슨 일이 일어나고 있는지보고 확인해 봤어? –

+0

예, 그냥 무시합니다. – Xenix

+0

컴파일러는'scanf'를 무시하지 않습니다. 생성 된 어셈블리 코드를 볼 수 있습니다 (예 :'gcc -Wall -fverbose-asm -O -S'). 'scanf'가 여전히 거기에서 참조되는 것을 볼 수 있습니다. 'scanf' *를 잘못 사용하고 있습니다 * –

답변

3

do-nothing 매크로로 의도적으로 scanf()을 정의한 경우 컴파일러가 잘못 컴파일하는 유일한 방법입니다. 컴파일러를 비난하지 마십시오!

입력 버퍼에 캐리지 리턴을 남긴 프로그램에서 이전에 scanf() 호출이있을 수 있습니다. do_math 값을 인쇄하여 해당 가설을 확인할 수 있습니다.

공백을 제거하려면 scanf(" %c", &do_math); (공백으로 %c)을 시도하십시오.

(또한 scanf()의 반환 값에주의하는 것이 좋습니다.)

+0

고마워요, 맞습니다! – Xenix

+0

"고맙습니다"라는 설명 대신, 답변에 동의 표시를 해 주시겠습니까? –

관련 문제