C언어 반복문 파트에 있는 예제인데, 왜 의도한 대로 실행이 안 되는지 모르겠습니다.

조회수 1776회

pragma warning (disable : 4996)

include

include

int main() { int min, val; min = INT_MAX; //int형 상수의 최댓값

printf("정수를 입력하시오\n종료는 Ctrl+z\n");
while (scan("%d", &val) != EOF) //Ctrl+z 입력시 반복문에서 빠져나감
{
    if (val < min)
        min = val;
}
printf("최솟값은 %d\n", min);
return 0;

}

//실행시 Ctrl+z를 입력해도 빠져나가지 않습니다. 도와주세요.

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • while문 조건안에 적혀있는 scan 함수는 맞는건가요? 아마 scanf로 적어야하는데 잘못 적으신것 같은데 알 수 없는 사용자 2018.1.11 16:23
  • 죄송합니다. scanf()인데 잘못 적었네요ㅜㅜ 알 수 없는 사용자 2018.1.11 16:52
  • 저는 window환경 visual studio 2017로 돌려보니 scan을 scanf로 바꾸면 어느정도는 작동합니다. 매번 입력마다 enter를 쳐줘야하고(ctrl+Z도 포함해서요), EOF로 종료하려하면 어째서인지 ctrl+z를 3번 입력해야하지만요;; 아마 무언가 입력 버퍼와 관련된 문제라고 생각되는데 제 수준에서 해결책은 못 찾았습니다.;; 알 수 없는 사용자 2018.1.11 18:13
  • 그러네요. 3번 입력하니까, 그제야 의도했던 대로 실행이 되네요. 왜 3번해야 하는지 궁금해집니다... 답변 주셔서 고맙습니다! 알 수 없는 사용자 2018.1.11 18:23
  • 왜인지 모르겠지만 scanf()가 EOF를 인식하지 못하는것 같네요. 알 수 없는 사용자 2018.1.12 00:16

1 답변

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)