EOF?
EOF는 end of fie의 줄임말로, 파일의 끝을 표현하기 위해 정의해 놓은 상수이다.(-1 값을 가지고 있다.)
함수 호출의 실패나, 윈도우에서는 ctrl+z, 리눅스에서는 ctrl+d를 입력했을 경우 EOF를 반환한다.
백준 문제를 풀 때 최대 몇개의 입력이 들어오는지 모르는 문제에서 사용된다.
C, C++에서 eof를 처리하는 여러 방법에 대해 정리해보았다.
첫 번째 방법
#include <stdio.h>
int main() {
int x, y;
while(scanf("%d %d", &x, &y) != EOF) {
---
}
return 0;
}
scanf 와 while을 같이 사용하여, x와 y의 값이 존재할 때 까지 반복해서 값을 받는 코드이다.
두 번째 방법
#include <stdio.h>
int main() {
int x, y;
while (scanf("%d%d", &x, &y) == 2) {
---
}
return 0;
}
scanf 가 입력받은 값의 개수를 리턴하는 것을 이용한 코드이다.
x와 y의 값 2개(원하는 값의 개수)가 정상적으로 들어올때까지 반복해서 값을 받는 코드이다.
세 번째 방법
#include <iostream>
using namespace std;
int main() {
int x, y;
while (cin >> x) {
cin >> y;
}
return 0;
}
x를 입력받을 수 있을때 까지 반복해주는 코드이다.
다만 한가지 값을 입력 받았기 때문에 나머지는 while 문 안에서 받아줘야 한다.