EOF (End-of-File) Condition
파일 끝 조건
- 입력이 파일의 끝에 도달했을 때 이를 인식하게 해주는 방법이다.
- EOF는 입력에 있어서 특정 문자를 나타내는 것이 아니라 더 이상 문자가 없다는 신호이다.
* UNIX와 MS-DOS 와 같은 많은 OS들에서 Redirection(리디렉션) 기능을 제공하기 때문에 키보드 입력을 파일로 대체할 수 있다.
Ex. MS-DOS 상에서의 명령 예시 (< 연산자는 UNIX와 DOS에서 사용하는 Redirection Operator이다.)
gofish.exe 와 fishtale.txt 라는 파일이 있다고 가정할 때,
gofish < fishtale
위 명령은 gofish 프로그램이 fishtale 텍스트 파일로 부터
입력받게 하는 명령이다.
* 많은 OS들이 EOF 조건을 키보드 입력을 통해 시뮬레이션 가능하다.
UNIX, MAC Symantec C++ : Ctrl + D
MS-DOS : 해당 줄의 어디에서든지 Ctrl + Z + Enter
Metrowerks Codewarrier : Mac, Windows 환경에서 Ctrl + Z
Microsoft Visual C++, Borland C++ 5.5, PC용 GNU C++ : 해당 줄의 첫 문자로 사용된 Ctrl + Z + Enter
- 많은 PC프로그래밍 환경들이 Ctrl + Z를 시뮬레이션 EOF로 인식하지만 세부 사항은 차이가 있음을 알 수 있다.
EOF는 문자 코드 범위 밖에 있는 하나의 값을 나타내기 때문에 char형과 호환이 되지 않을 수 있다.
예를 들어, 어떤 C++ 시스템에서는 char형 데이터는 부호를 가지지 못하는데, 값이 -1인 EOF는 char형 변수로 처리할 수 없게 된다. 이 때문에 cin.get()을 사용하여 EOF 검사를 하려면 cin.get() 리턴값을 char형 대신 int형에 대입해야 한다.
또한, 문자 변수를 char형이 아닌, int형으로 선언하게되면 문자 변수를 출력할 때 따시 char형으로 변환을 해주어야 한다.