scanf 반환값, EOF?????

떵떵·2022년 5월 26일
0

c언어 숙달을 위해 백준에서 알고리즘 공부 중 무한루프로 인해 막히는 문제를 만남

입력 예시에 최대 입력 갯수 제한이 없기 때문에 while(1)로 scanf() 돌리다가 계속 출력 초과로 틀림

해결법

EOF !!!

EOF(End of File)
파일의 끝을 탐지하는 상수로서 파일의 끝에 도달했을때 언제나 특별한 값을 반환하도록 함.

특별한 값 = -1

이것이 위의 문제에서 사용되는 이유: 파일의 끝을 탐지하는 상수이지만 키보드를 통한 입력 시에도 입력의 끝을 알려주는 방법으로 사용함

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

scanf()의 반환값 이용

scanf함수는 입력받은 개수만큼 값을 반환함

b = scanf("%d", &a);
printf("%d",b);

>>> 1

scanf()에 제대로된 정수를 입력한다면 b = 1이 됨

이를 이용해 입력 예시에 나온 입력 값의 개수만큼 scanf에 안들어오면 false 나게하여 무한루프를 면할 수 있음

while(scanf("%d", &a) == 1)

0개의 댓글