Computer Language/C & C++
[C/C++] EOF
HONGGG
2023. 11. 5. 01:54
End of File
파일의 끝을 표현하는 상수 값 (-1)
데이터 소스로부터 더 읽을 데이터가 없음을 나타내는 값으로, C 표준 라이브러리에서 getchar와 같은 문자 입력 함수가 파일 끝에 왔음을 알리기위한 메크로라고 한다.
이 메크로 값은 EOF를 리컨하는데 실제 값은 시스템마다 다르지만 -1이 가장 흔하다고 한다.
이는 어떠한 유효 문자 값(ASCII)와도 겹치지 않기 때문이다.
블록 입력 함수는 입력받은 문자의 수를 리턴하므로, 요구한 입력의 길이보다 작은 수를 리턴할 경우 EOF를 만난 것으로 간주할 수 있다.
간혹 백준 문제를 풀다보면 얼마나 많은 입력 값을 입력할지 알려주지 않는 문제가 있다. 이러한 문제에서 EOF가 할당될 때까지 입력을 받으면 된다.
만약 fgetc(stdin) 으로 키보드를 입력장치로 콘솔, 터미널에서 입력을 받을 경우 다음 키들을 받으면 EOF를 반환한다.
Windows = "Ctrl+Z"
Linux = "Ctrl+D"
예제코드
#include<stdio.h>
int main() {
int x, y;
while (scanf("%d %d", &x, &y) != EOF) {}
return 0;
}
2개의 정수를 EOF 값을 받을 때까지 게속 입력 받는다.
#include<iostream>
using namespace std;
int main() {
int x, y;
while (!cin.eof()) {
cin >> x >> y;
}
return 0;
}
EOF가 입력되지 않으면 반복하여 입력 받는다.
#include<iostream>
using namespace std;
int main() {
int x, y;
while (cin >> x) {
cin >> y;
}
return 0;
}
참고자료