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를 입력해도 빠져나가지 않습니다. 도와주세요.

  • 2018년 01월 11일에 작성됨

  • 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     
조회수 104


Banner bitmango

1 답변


좋아요
0
싫어요
채택취소하기

운영체제가 unix/linux 라면 ctrl+z 시그널은 프로세스 종료입니다.

루프 종료는 다른 조건으로 해야 합니다.

  • 2018년 01월 11일에 작성됨

  • 말씀 감사합니다.    조병관   2018.1.12 01:22     

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close