학습 정리/👨‍💻 PS Study

[C] 백준 10951번 - A+B-4 (EOF 개념)

무딘붓 2022. 7. 8. 23:38

https://www.acmicpc.net/problem/10951

 

10951번: A+B - 4

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

(21.08.16)

 

10951번: A+B-4  - C언어 풀이

 

[소스코드]

#include <stdio.h>
// [baekjoon] 10951번 - A+B-4

int main() {
	int a, b;
	while (scanf("%d %d", &a, &b) != EOF) {
		printf("%d\n", a + b);
	}

	return 0;
}

간단해 보이는 문제지만, EOF의 개념을 알아야 풀 수 있는 문제였다.​

우선 EOF는 End Of File의 약자인데, 파일의 끝을 표현하기 위한 상수( -1의 값을 가짐)이다.


먼저 scanf에 대해 살펴보면,
scanf는 입력받은 값의 개수를 함수가 종료될 때 반환한다.
scanf("%d %d", &a, &b) 의 경우에는 정상적으로 입력받았을 때 2를 반환하는 것이다.

하지만,
파일이 완전히 끝난 뒤(End Of File)에 더 입력을 받고자 하는 행동이 있을 때 -1을 반환한다. 

이를 이용해서 종료조건이 주어지지 않는 문제를 풀 수 있다.

 

 

요약

1. EOF는 파일의 끝을 표현하기 위한 상수

2. scanf는 입력받은 값의 개수를 종료시 반환

3. scanf는 파일이 완전히 끝난 뒤 입력을 받고자 하는 행동이 있을 때는 -1 반환