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;
}
이 코드는 제대로 된 입력값이 들어올 때까지 계속 반복하게 된다.
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
'Programming > C언어우려먹기' 카테고리의 다른 글
64bit 에서 int, long 사용 (0) | 2016.01.15 |
---|---|
유클리드 호제법을 이용한 최대공약수, 최소공배수 계산 (0) | 2008.05.29 |
factorial (재귀호출, 반복문) (0) | 2008.05.01 |
정렬 - 삽입정렬(Insert Sort), 힙정렬(Heap Sort), 쉘정렬(Shell Sort) (0) | 2008.04.27 |
정렬 - 버블정렬(bubble sort), 선택정렬(selection sort), 퀵정렬(quick sort) (0) | 2008.04.27 |
source C 완전제곱수 판별 (2) | 2008.03.19 |
C언어에서 사용되는 연산자들(사실 C,C++,JAVA등 다양한 언어에서 공통적으로 사용된다.) (0) | 2008.03.10 |
무지간단한 주사위 통계 (0) | 2008.03.03 |
2진수로 표현하기 (0) | 2008.02.28 |