EOF?
EOF는 end of file의 줄임말이다.
주로 이것은 백준 문제를 풀 때
최대 몇개의 입력이 들어오는지 모르는 문제에서 사용된다.
c언어에서 eof를 처리하는 방법은 여러가지이다.
이번 포스트에서는 그 방법들을 알아보자
첫번째 방법
1
2
3
4
5
6
7
8
9
#include<stdio.h>
int main() {
int x, y;
while (scanf("%d %d", &x, &y) != EOF) {
}
return 0;
}
scanf
와 while
을 같이 사용해서
x와 y의 값이 존재할 때 까지 반복해서 값을 받는 코드이다.
두번째 방법
1
2
3
4
5
6
7
8
9
#include<stdio.h>
int main() {
int x, y;
while (scanf("%d%d", &x, &y) == 2) {
}
return 0;
}
scanf
가 입력받은 값의 개수를 리턴하는 것을 이용한 코드이다.
x와 y의 값이 2개 정상적으로 들어올때까지 반복해서 값을 받는 코드이다.
세번째 방법
1
2
3
4
5
6
7
8
9
10
11
#include<iostream>
using namespace std;
int main() {
int x, y;
while (!cin.eof()) {
cin >> x >> y;
}
return 0;
}
eof
가 아닐때까지 반복을 해주는 코드이다.
다만!! 이 방법은 백준에서 사용하면 안된다.
백준에서 이 방법을 사용하게 되면 런타임 에러가 발생한다.
네번째 방법
1
2
3
4
5
6
7
8
9
10
11
#include<iostream>
using namespace std;
int main() {
int x, y;
while (cin >> x) {
cin >> y;
}
return 0;
}
가장 간단한 방법으로 생각된다.
x를 입력받을 수 있을때까지 반복해주는 코드이다.
다만 한가지 값만 입력받았기 때문에 나머지는 while
문 안에서 받아줘야 한다.