강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

KIYOMIN님의 프로필 이미지
KIYOMIN

작성한 질문수

홍정모의 따라하며 배우는 C언어

8.2 파일의 끝

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

작성

·

409

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;

}

퀴즈

56%나 틀려요. 한번 도전해보세요!

프로그램에서 입출력(I/O) 작업을 할 때 버퍼를 사용하는 주된 이점은 무엇일까요?

프로그램 코드의 길이를 줄여줍니다.

데이터를 모아서 처리하여 입출력 효율을 높여줍니다.

사용자 입력 시 문법 오류를 자동으로 수정해 줍니다.

컴파일 시간을 단축시켜 줍니다.

답변 1

2

안녕하세요 :)

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 을 리턴한다고 하네요.

KIYOMIN님의 프로필 이미지
KIYOMIN

작성한 질문수

질문하기