C언어

[c++] while loop에서 EOF(End Of File)이용하기

IT 참다랑어 2020. 12. 3. 11:26

요즘 복습 겸 백준 단계별 풀이를 하고 있는데

while을 이용하면서 다른 종료에 대한 조건(ex. a+b 계산에서 a,b가 둘다 0이면 종료) 없이

입력이 끝나면 프로그램을 종료하는 문제(백준 10951번)를 처음 작성하게 되었다.

 

학교에서 그래도 프로그래밍 수업을 은근 들었는데 한번도 eof를 이용한 종료를 써본 기억이 없다니..ㅋㅋㅋㅋㅋㅋ

 

아무튼 문제의 조건은 다음과 같다.

 

input 

 - 한 줄에 두 숫자 a, b가 입력된다.

 - 총 몇 개의 테스트케이스가 있을지는 알 수 없다.

 

output

 - 입력이 종료될 때까지 a + b를 출력한다.

 

입력예제

1 1
2 3
3 10
5 1
2 7
2 1

출력예제

2
5
13
6
9
3

 

처음에 cin >> a >> b를 이용해서 a==EOF일때 프로그램을 종료하고 싶었다.

근데 예상과 달리 <ctrl>+<z>를 입력하니 while loop가 종료되지 않고 계속 돌아갔다.

#include <iostream>
using namespace std;

int main() {
	int a, b;
	cin >> a >> b;
	while(a!=EOF){
		cout << a + b << "\n";
		cin >> a >> b;
	}
}

 

그래서 google신을 찾아보니 아예 cin에 <ctrl>+<z>를 입력했을 때를 지정하는 함수가 있었다.

이를 이용해서 해답으로 내가 작성한 코드는 다음과 같다.

#include <iostream>
using namespace std;

int main() {
	int a, b;
	cin >> a >> b;
	while (!cin.eof()){
		cout << a + b << "\n";
		cin >> a >> b;
	}
}

 

'C언어' 카테고리의 다른 글

[c++] char 형으로 받은 숫자를 int 로  (0) 2020.12.18