두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
입력은 여러 개의 테스트 케이스로 이루어져 있다.
각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)
각 테스트 케이스마다 A+B를 출력한다.
기본 문제 자체는 입출력과 덧셈 연산에 대해 물어보는 문제이다. 하지만, 문제를 잘 읽어보면 무언가 이상함을 느낄 수 있을 것이다.
백준에 있는 문제의 대부분은 입력받거나 출력해야하는 데이터의 수를 정해준다. 하지만, 이 문제에는 그런 제한된 범위 자체가 존재하지 않는다.
질문 게시판을 돌아보면서 찾아본 결과, 이 문제는 EOF(End Of File)을 이용한다는 것을 알게 되었다.
참고 : https://www.acmicpc.net/board/view/39199
EOF란, 영어 해석 그대로 파일의 끝이라는 뜻이다. C언어를 사용하면서, scanf 함수에 항상 초록색 밑줄이 그어져 있는 것을 보았을 것이다.

그 이유는, 적힌 그대로 scanf의 반환값을 어디에도 저장하지 않았기 때문이다. 사실 scanf는 사실 반환값을 필요로 하는 함수였던 것이다!
그럼 scanf는 어떠한 반환값을 가질까? 이에 대한 해답은 다음 코드의 실행 결과를 보면 알 수 있다:
#include <stdio.h>
int main(void) {
	int a, b, n, m;
	n = scanf("%d", &a);
	m = scanf("%d %d", &a, &b);
	printf("%d %d\n", n, m);
	return 0;
}
입력 : 1 2 3
출력 : 1 2
scanf는, 큰 따옴표 안에 포맷 형식이 줄줄이 들어가고, 그에 맞는 변수들을 뒤에 적는다. scanf 함수는 이러한 포맷 형식에 알맞게 입력이 들어온 개수를 반환한다.
만약 EOF를 받았을 경우, scanf는 -1을 반환한다. 우리는 -1을 반환한다는 것을 조건으로 하는 반복문을 만들 것이다.
#include <stdio.h>
int main(void) {
	int a, b;
	while (scanf("%d %d", &a, &b) != -1) {
		printf("%d\n", a + b);
	}
	return 0;
}
while문 안에 scanf를 함수처럼 써도 전혀 오류가 나지 않고, 정상적으로 scanf도 계속 실행이 되는 것을 알 수 있다.
문제 자체가 높은 난이도를 가지고 있지는 않지만, EOF가 나오는 첫 번째 문제였기에 저장소에 저장하기로 했다.