• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

EOF를 입력의 중간에 넣으면 26이 출력되면서 루프 탈출이 안됩니다

21.07.20 14:00 작성 조회수 274

0

EOF 단 하나만을 입력하는 경우에는 정상적으로 반복문 탈출이 가능합니다

하지만 예를 들어 aaEOF처럼 다른 데이터와 함께 입력하는 경우에 EOF는 -1이 아니라 26을 출력하며 반복문을 탈출하지 못합니다

이유를 알고 싶습니다

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main()

{

int c;

while (1)

{

c = getchar();

printf("%d\n", c);

if (c == EOF)

break;

}

return 0;

}

답변 1

답변을 작성해보세요.

2

안소님의 프로필

안소

2021.07.20

안녕하세요 :)

EOF 를 입력한다는게 강의에서 언급된 Ctrl + Z 입력을 하는 것을 말씀하시는건가요?

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=tipsware&logNo=221315155895

위 링크에서 궁금증을 해결하실 수 있을 것 같습니다.

aa^Z 처럼 다른 문자들과 Ctrl + Z 를 섞어쓰면 문자로서 처리된다고 합니다. Ctrl + Z 의 아스키코드가 26이기 때문에 26을 getchar 가 리턴한 것입니다.

반면에 ^Z 이렇게 단독으로 쓰면 getchar 가 -1 을 리턴한다고 하네요.