본문 바로가기

코딩/C++,C

[C/C++]EOF?

end of file이 C에서만 파일의 끝을 이렇게 표시하는지 windows에서 파일의 끝을 표현하는 방식인지 모든 운영체제가 파일의 끝을 이렇게 표현하는 것인지 궁금했다.

 

 

스트림(stream)

C 프로그램은 파일이나 콘솔의 입출력을 직접 다루지 않고, 스트림(stream)이라는 것을 통해 다룹니다.

스트림(stream)이란 실제의 입력이나 출력이 표현된 데이터의 이상화된 흐름을 의미합니다.

즉, 스트림은 운영체제에 의해 생성되는 가상의 연결 고리를 의미합니다.

 

 

C언어에서 파일과의 연결을 위한 스트림은 사용자가 직접 생성하고 소멸시켜야 합니다.

하지만 콘솔 장치에 대한 스트림은 프로그램 실행 시 자동으로 생성되며, 프로그램 종료 시 자동으로 소멸합니다.

 

 

C언어에서 기본적으로 제공되는 표준 스트림(standard stream)은 다음과 같습니다.

표준 스트림설명

stdin 표준 입력 스트림
stdout 표준 출력 스트림
stderr 표준 오류 스트림

EOF(End Of File)

운영체제에서 파일의 끝을 탐지하는 방법은 운영체제마다 약간씩 다릅니다.

하지만 C언어는 운영체제와 상관없이, 파일의 끝에 도달했을 때 언제나 특별한 값을 반환하도록 합니다.

그 값을 EOF(End Of File)라고 하며, 실제로 이 값은 -1을 나타냅니다.

 

파일뿐만 아니라 키보드를 통한 입력 시에도 입력의 끝을 알려주는 방법이 필요합니다.

대부분의 유닉스(UNIX) 시스템에서는 라인의 시작 위치에서 Ctrl+D를 누르면 EOF를 발생시킬 수 있습니다.

윈도우 명령창에서는 해당 라인의 어디에서든 Ctrl+Z를 누르고 나서 Enter를 누르면 EOF를 발생시킬 수 있습니다.

 

 

출처: www.tcpschool.com/c/c_string_io

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

 

'코딩 > C++,C' 카테고리의 다른 글

[C/C++] .h와 .hpp의 차이  (0) 2021.03.31
[C/C++]delete로 변수가 삭제되지 않을 때  (0) 2021.03.28
[C/C++] stdin, stdout의 정체?  (0) 2021.03.23
[C/C++]dangling pointer(허상 포인터)  (0) 2021.03.21
[C/C++] 널 문자(\0)와 NULL  (0) 2021.03.19