#include <stdio.h>
int main() {
int A, B;
while(1){
scanf("%d %d", &A, &B);
printf("%d\n", A+B);
}
return 0;
}
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 라길래
위 처럼 적었는데,생각해보니까..이거 무한로프 도는데 메모리 괜찮나? 하는 생각이 들었음
그래서 멈춰줄 장치가 있어야 할 것 같다고 생각했고, 구글링을 통해 EOF라는 것을 찾았다.
EOF란 데이터 입력이 없으면 실행을 끝내는 상수이다.
해서 고치면,
#include <stdio.h>
int main()
{
int a,b;
while(scanf("%d %d",&a,&b) != EOF )
{
printf("%d\n", a+b );
}
return 0;
}
EOF가 아닐 때까지 계속 루프를 돈다는 이야기. 이는 데이터 입력이 없기 전까지 계속 돈다는 이야기가 된다.
근데 이렇게 짜도 돌아간다고 한다.
#include <stdio.h>
int main() {
int A, B;
while(scanf("%d %d", &A, &B) == 2)
printf("%d\n", A+B);
return 0;
}
scanf의 리턴값과 관련된 해결 방법이라고 한다
scanf는 입력을 개수를 반환하는데, (%의 형식) 이 개수가 맞지 않으면 종료한다는 의미가 된다.
예컨데, 1 1 입력시 2가 출력되고, 1 a가 입력되면 1이, a 1가 입력되면 0이 반환된다.(a에서 입력 실패로 처리하고 반환하기 때문)
'👩💻 알고리즘 > 🔠 C' 카테고리의 다른 글
백준 5597 (0) | 2024.02.11 |
---|---|
[한빛미디어 혼공학습단_혼공C] 5주차 스터디 ch8 배열 (0) | 2024.02.07 |
백준 11382 (0) | 2024.02.03 |
[한빛미디어 혼공학습단_혼공C] 4주차 스터디 ch7 (0) | 2024.01.28 |
[한빛미디어 혼공학습단_혼공C] 3주차 스터디 ch5~ch6 (0) | 2024.01.21 |