目次
1. scanf 함수 개요
C 프로그래밍 언어를 배우면서 프로그램에 데이터를 입력하는 가장 많이 사용되는 방법 중 하나가 scanf 함수입니다. 이 함수는 프로그램의 “청취자” 역할을 하여 사용자가 입력한 데이터를 지정된 변수에 저장합니다.
scanf의 기본 구문
scanf("formatSpecifier", &variable);
여기서 핵심 요소는 “formatSpecifier”(형식 지정자)와 변수 앞의 앰퍼샌드(&)입니다. 형식 지정자는 입력될 데이터의 타입을 지정하고, &는 해당 변수의 주소를 나타냅니다. 이 규칙을 따르면 scanf가 사용자 입력을 올바르게 처리할 수 있습니다.
int num;
scanf("%d", &num);
이와 같이 scanf는 프로그램에 입력을 제공하고 그 데이터를 사용할 수 있게 합니다.
2. 자주 사용되는 형식 지정자
%d: 정수용%f:float형 실수용%lf:double형 고정밀 실수용%s: 문자열용 (공백으로 구분)%c: 단일 문자용
double val;
scanf("%lf", &val);
3. 여러 입력을 동시에 처리하기
int age;
float height;
scanf("%d %f", &age, &height);
printf("Age: %d, Height: %.2fn", age, height);
4. 입력 검증 및 오류 처리
int age;
printf("Please enter your age (0–120): ");
if (scanf("%d", &age) == 1 && age >= 0 && age <= 120) {
printf("The entered age is %d years.n", age);
} else {
printf("Invalid age.n");
}
5. 입력 스트림 비우기
scanf를 사용할 때 “이전 입력이 남아 있다”는 느낌을 받을 수 있습니다. 이는 개행 문자(\n) 등과 같은 문자가 입력 스트림에 남아 있기 때문입니다.
scanf("%*[^n]");
scanf("%*c");
이렇게 하면 입력 버퍼에 남아 있는 개행 문자나 기타 문자를 건너뛸 수 있습니다. 그러나 반복문 안에서 비표준 fflush(stdin) 사용을 피하고, 위와 같은 방법을 사용해 안전하게 처리하는 것이 좋습니다.
6. 흔히 발생하는 실수와 모범 사례
- 형식 지정자 일치: 데이터 타입과 지정자를 맞추기
- 문자열 길이 주의:
%s입력 시 버퍼 크기를 고려하기 - 스트림 비우기: 개행 문자를 남기지 않기
7. 고급 사용 | 정교한 scanf 기법
char name[20];
printf("Please enter your name: ");
scanf("%19s", name); // buffer-safe measure
printf("Hello, %s!n", name);
요약
scanf 함수는 C에서 기본적인 입력 방법입니다. 형식 지정자, 오류 검사, 입력 스트림 처리를 이해하면 안전하게 사용할 수 있습니다. 남아 있는 입력 버퍼와 버퍼 오버플로우 문제에 특히 주의하세요.


