1. 문제
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
while (1)
{
int num1, num2;
scanf("%d %d", &num1, &num2);
printf("%d\n", num1 + num2);
}
return 0;
}
위 코드를 제출하면 "출력 초과"가 나온다.
2. 해결 방법
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int num1, num2;
while(scanf("%d %d", &num1, &num2)!=EOF)
{
printf("%d\n", num1 + num2);
}
return 0;
}
EOF는 End Of File의 약자로 -1로 정의되어있다.
파일의 끝을 탐지하는 방법은 운영체제마다 다르지만, C언어에서는 EOF를 통해서 파일의 끝을 탐지하고 키보드를 통한 입력의 끝도 알려준다. 함수 호출시 에러가 있는지 없는지에 대한 반환값을 검사할 때 주로 사용되고 이는 신뢰성있는 코드를 작성하는데 도움을 준다.
키보드를 대상으로 하는 getchar나 scanf같은 함수들은 두가지 경우에 EOF, -1값을 반환한다.
1) 함수 호출을 실패할때
2) 유닉스는 Ctrl + D, 윈도우는 Ctrl + Z를 통해서 EOF를 발생시킬때
키보드의 입력에서 엔터도 결국은 문자라서 끝을 알려줄 방법이 없다. 때문에 위와같은 특정 키를 입력해서 EOF를 발생시킨다.
'BACKJOON, 백준' 카테고리의 다른 글
백준 2566번 최대값 초기 설정 (0) | 2023.12.04 |
---|---|
백준 10951번 중복 숫자 (0) | 2023.11.18 |
백준 2480번 주사위 세개 (0) | 2023.11.15 |
백준 2525번 오븐 시계 (0) | 2023.11.14 |
백준 11382번 꼬마 정민 (0) | 2023.11.14 |