scanf 함수의 사용법
키보드에서 타이핑하는 모든 내용은 문자로 인식됩니다. 따라서 입력한 데이터를 연산이 가능한 정수나 실수로 사용하기 위해 변환 과정이 필요합니다. 이때 사용하는 것이 scanf 함수입니다. 입력한 문자들을 스캔해서 변환 문자를 통해 원하는 형태의 데이터로 바꿔서 변수에 저장해 줍니다.
scanf 함수의 사용법은 다음과 같습니다.
scanf("%d", &a);
// a : 변수명
// %d: int형 변환 문자
scanf의 소괄호 안에 변환 문자, 앰퍼샌드(&) + 변수명을 입력하면 됩니다. 예제를 통해 scanf 함수의 사용법을 확인해 보겠습니다.
#include <stdio.h>
int main(void){
int a;
scanf("%d", &a);
printf("입력된 값 : %d\n", a);
return 0;
}
실행 결과
10
입력된 값 : 10
프로그램을 실행하면 scanf 함수 부분을 실행할 때 커서(_)가 깜빡거리고 있을 겁니다. 이는 입력 준비가 된 것이니 값을 입력해야 다음 문장이 실행됩니다.
scanf 함수를 가용할 때에는 2가지 점을 유의해야 합니다.
- scnaf 함수에서 변수명을 지정할 때는 &(앰퍼샌드)를 붙여야 합니다.
- scanf 함수에서 사용한 변환 문자와 맞는 형태의 데이터를 입력해야 합니다.
scanf 함수의 응용
scanf 함수는 여러 개의 변환 문자를 나열해서 한 번에 2개 이상의 변수에 값을 입력할 수 있습니다.
printf 함수와 비슷하게 변환 문자들은 큰따옴표("") 안에 순서대로 나열되어 있고 변수는 콤마(,)로 구분됩니다.
int age;
double height;
scanf("%d%lf", &age, &height);
문자와 문자열의 입력
char형 변수에 문자를 입력할 때는 키보드로 입력하는 모든 문자가 대상이 됩니다. = 스페이스 바, 엔터 모두 문자로 전달이 됩니다.
문자열은 char 배열에 변환 문자 %s를 사용해 입력하는데 배열명에 &를 붙이지 않습니다. 그리고 스페이스 바와 엔터가 입력된 바로 전까지만 저장하기 때문에 공백 없이 연속으로 입력해야 합니다.
예제를 통해 살펴보겠습니다.
#include <stdio.h>
int main(void){
char grade;
char name[20];
printf("학점 입력 : ");
scanf("%c", &grade);
printf("이름 입력 : ");
scanf("%s", name);
printf("%s의 학점은 %c입니다.\n", name, grade);
return 0;
}
실행결과
1.
학점 입력 : A
이름 입력 : 조아리
조아리의 학점은 A입니다.
2.
학점 입력 :
이름 입력 : 조 아리
조의 학점은
입니다.
한글은 한 자당 2바이트를 차지하므로 9자까지 작성이 가능합니다. 널문자까지 포함하여 최대 19 바이트(한글 18바이트 + 널문자 1바이트)를 사용할 수 있습니다. 한글 2바이트, 영문은 1바이트
2번 실행 결과처럼 문자 입력 시 엔터를 사용하면 그대로 엔터가 입력되며 문자열 입력 시 띄어쓰기를 쓰면 그 이전까지만 입력이 된 것을 확인하실 수 있습니다.