처음
#include <stdio.h>
int main() {
int A;
scanf("%d", &A);
int B;
scanf("%d", &B);
int k;
A+B = k;
printf("%d", k);
}
수정
#include <stdio.h>
int main() {
int a, b;
while (scanf("%d %d", &a, &b) != -1) {
printf("%d \n", a + b);
}
return 0;
}
해설
- scant함수의 특징 : 서식지정자 개수 즉 읽은 데이터의 개수에 따른 반환값이 존재한다.
만약 scanf("%d %d", &am &b);의 경우 서식지정자 &d가 2개 즉
int 데이터를 2개 받았으므로 2를 반환한다.
만약 데이터를 읽다가 파일의 끝에 도달할 경우
scanf 함수는 -1을 반환한다.
여러개의 테스트 케이스를 입력하므로
입력의 반복이 이루어져야 하는데
이때 while문 조건식을 이용한다.
while문 조건식 설정
scanf("%d %d", &a, &b) != -1
`!= -1` 대신 `!= EOF`를 쓰는 것이 더 정확하다고 한다
### **1. `EOF`와 `-1`의 차이**
- 대부분의 시스템에서 **`EOF`는 -1과 같지만**, 특정 시스템에서는 다른 값일 수도 있어.
- 따라서 `!= -1`을 쓰는 대신 **`!= EOF`를 사용하는 것이 더 안전하고 가독성이 좋아.**
✅ **추천 코드 (더 안전한 버전)**
```c
#include <stdio.h>
int main() {
int a, b;
while (scanf("%d %d", &a, &b) != EOF) { // EOF를 사용
printf("%d\n", a + b);
}
return 0;
}
```
❌ `while (scanf("%d %d", &a, &b) != -1) {`
✅ `while (scanf("%d %d", &a, &b) != EOF) {`
'Dev > 백준문제풀이' 카테고리의 다른 글
[백준] 10872_팩토리얼 (0) | 2025.03.06 |
---|---|
[백준] 2741_N찍기 (0) | 2025.03.06 |