C 프로그래밍에서 입력을 받기 위해 사용되는 scanf 함수에 대해 알아보고자 합니다. scanf 함수는 사용자로부터 입력을 받아 변수에 저장하는 역할을 합니다. 아래에서 scanf 함수의 사용법을 자세히 설명하겠습니다.
1. 기본적인 scanf 사용법
scanf 함수를 사용하기 위해서는 다음과 같은 형식을 따라야 합니다.
scanf("입력 형식", &변수1, &변수2, ...);
"입력 형식"은 사용자로부터 입력받을 데이터의 형식을 지정하는 문자열입니다. 예를 들어, 정수를 입력받으려면 %d, 실수를 입력받으려면 %f와 같은 형식 지정자를 사용합니다. 다음은 정수와 실수를 입력받는 예시입니다.
int number;
float pi;
scanf("%d", &number);
scanf("%f", &pi);
&변수1, &변수2, ...은 입력된 값을 저장할 변수들입니다. & 연산자를 사용하여 변수의 주소를 전달해야 합니다.
2. 형식 지정자와 입력 형식
scanf 함수에서 자주 사용되는 형식 지정자 몇 가지를 알아보겠습니다.
%d: 10진수 정수 입력
%f: 부동 소수점 수 입력
%c: 문자 입력
%s: 문자열 입력
아래 예시는 형식 지정자를 사용하여 입력을 받는 방법을 보여줍니다.
int age;
float weight;
char grade;
char name[20];
printf("나이를 입력하세요: ");
scanf("%d", &age);
printf("체중을 입력하세요: ");
scanf("%f", &weight);
printf("학점을 입력하세요: ");
scanf(" %c", &grade); // %c 형식 지정자 앞에 공백을 넣어 버퍼를 비웁니다.
printf("이름을 입력하세요: ");
scanf("%s", name);
위 예시에서는 %d를 사용하여 나이를 입력받고, %f를 사용하여 체중을 입력받았습니다. 또한, %c를 사용하여 학점을 입력받는데, 앞에 공백을 넣어 버퍼를 비워줍니다. 마지막으로, %s를 사용하여 이름을 입력받아 name 배열에 저장합니다.
3. 입력 오류 처리
사용자의 잘못된 입력을 처리하고 오류를 방지하기 위해 scanf 함수를 사용할 때 몇 가지 주의사항이 있습니다.
사용자의 입력이 형식에 맞지 않는 경우, scanf 함수는 실패하고 오류를 반환합니다. 이때, 실패한 입력은 버퍼에 그대로 남아있게 됩니다. 따라서, 오류 처리를 위해 입력 버퍼를 비워주는 것이 중요합니다. 이를 위해 scanf 함수 호출 이후에 getchar() 함수를 사용하여 입력 버퍼를 비워줄 수 있습니다.
int number;
printf("정수를 입력하세요: ");
if (scanf("%d", &number) != 1) {
printf("유효하지 않은 입력입니다.\n");
while (getchar() != '\n'); // 입력 버퍼 비우기
}
위 예시에서는 scanf 함수가 실패한 경우 오류 메시지를 출력하고, getchar() 함수를 사용하여 입력 버퍼를 비워줍니다. getchar() 함수는 개행 문자('\n')를 만날 때까지 입력 버퍼의 문자를 하나씩 소비합니다.
4. 입력 시 공백 문자 처리
scanf 함수는 기본적으로 공백 문자를 구분자로 사용하여 입력을 처리합니다. 따라서, 사용자로부터 공백 문자가 포함된 문자열을 입력받을 경우 문제가 발생할 수 있습니다. 이를 해결하기 위해 fgets 함수를 사용하여 한 줄을 통째로 입력받고, 이후에 필요한 형식 변환을 수행할 수 있습니다.
char address[100];
printf("주소를 입력하세요: ");
fgets(address, sizeof(address), stdin);
위 예시에서는 fgets 함수를 사용하여 한 줄을 통째로 입력받고, 입력을 address 배열에 저장합니다. 이후에 필요한 형식 변환을 수행할 수 있습니다.
이상으로 C 프로그래밍에서 scanf 함수의 사용법과 입력 오류 처리에 대해 알아보았습니다. scanf 함수를 적절히 활용하여 사용자로부터 입력을 받아 프로그램을 작성할 수 있습니다. 더 자세한 내용은 C 언어 관련 문서를 참고하시기 바랍니다. 행운을 빕니다!
'C , C++' 카테고리의 다른 글
C언어 while문 사용법 및 예제코드 (0) | 2023.07.01 |
---|---|
C언어 if문, else if, else 사용법 및 예제코드 (0) | 2023.06.28 |
객체지향 언어, C++ 언어의 특징 간단정리 (0) | 2023.06.28 |
절차지향 언어, C 언어의 특징? (0) | 2023.06.28 |
printf 사용법, C 프로그래밍에서의 printf 함수 사용법 안내 (0) | 2023.06.22 |
댓글