728x90
#include <stdio.h>
int main()
{
    int number1, number2;
    printf("정수 2개를 입력: ");
    scanf("%d %d", &number1, &number2);
    printf("number1 = %d, number2 = %d", number1, number2);
    return 0;
}

무지 간단한 코드다. 하지만 제대로 된 값이 입력되지 않으면 치명적인 결과가 나올수도 있다. 가령 제대로 된 값이 입력될 때까지 반복문을 돌리는 코드에서 숫자대신 문자를 입력하면 무한루프에 갇히는 경우가 종종 발생한다. 어떻게 처리하는 것이 좋을까?

사람들이 쉽게 지나치는 경우가 많지만 많은 함수가 return값을 제공하고 있다. 가능한 많은 함수의 return값을 생각하라. printf와 scanf의 경우도 마찬가지다. 특히 scanf의 return값을 꽤 유용하고 똑똑하다. scanf는 변수에 제대로 들어간 갯수만큼 return해준다. 만약 위의 코드에서 하나는 숫자 하나는 문자를 입력하면 return값은 1이 된다.
이를 이용해서 간단하게 오류처리를 해보자.

#include <stdio.h>
int main()
{
    int number1, number2;
    do{
        printf("정수 2개를 입력: ");
        fflush(stdin);                          //입력버퍼(stdin)를 비우라는 명령
    }while(scanf("%d %d", &number1, &number2) != 2);
    printf("number1 = %d, number2 = %d", number1, number2);
    return 0;
}

이 코드는 제대로 된 입력값이 들어올 때까지 계속 반복하게 된다.
728x90

+ Recent posts