[백준] 10951

UtsTem·2022년 8월 19일

백준 문제풀이

목록 보기
4/5
post-thumbnail

💻 문제 :

🧑‍💻 사용 언어: C99

✍️ 정답:


#include <stdio.h>
int main(void)
{
    int a, b;
    while(scanf("%d %d", &a, &b) != EOF)
    {
        printf("%d\n", a+b);
    }
    
    return 0;
}

🔪 내가 한 짓:

EOF 그게 뭔데.. 하고 구글링해보니
End Of File의 약자였다.
파일의 끝에 도달했을 때 C는 -1을 반환한다. 이 값이 C언어의 EOF이다.


당연히 뭐가 뭔지 몰랐던 난,, 구글링해서 코드 정답을 찾음

와중에 난 while문 안에 scanf가 들어갈 수 있는지도 몰랐다 ㅎ
그리고 처음엔 아무 생각없이

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

요지렁이 했다가 당연하게도 오류떴다. ^^

EOF를 처리하는 방법이 여러가지 있었다.

scanf가 반환값을 가진다는 것을 이용해서 처리할 수 있다.

while(scanf("%d %d", &a, &b) == 2)
{
	printf("%d\n", a+b);
}

이때 scanf의 반환값은 이때 서식문자에 알맞게 읽어들인 입력개수를 반환한다.
따라서 정수 2개가 들어오면 2를 반환한다.
a에 정수가 아닌 다른 것이 들어오면 0을 반환한다. (b는 검사도 안하고 종료함 ㄷ)
b에 정수가 아닌 다른 것이 들어오면 1을 반환한다.

오늘도 새로운 지식을 쌓았다,,^^

profile
패기와 만용 그 사이에 있는 사람입니다

0개의 댓글