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

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답변

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.