본문 바로가기
C언어

[C언어] scanf 함수의 사용법

by 에파 2021. 5. 21.
728x90

C언어 scanf 함수의 사용법, 키보드로 데이터 입력받기

 

 

 

scanf 함수는 키보드에서 입력한 값을 변수에 저장할 때 사용합니다.

 

scanf 함수의 사용법은 아래와 같습니다.

 

scanf("변환 문자", &변수명);

 

예를 들어 int형 변수 a에 정수를 입력하는 방법은 다음과 같습니다.

 

scanf("%d", &a);

 

예제를 통해 scanf 함수의 사용법을 알아보겠습니다.

 

#include <stdio.h>

int main(void) {
    int a;
    
    scanf("%d", &a);
    printf("입력된 값 : %d\n", a);
    
    return 0;
}

/*
<Run>
10
입력된 값 : 10
*/

 

프로그램이 실행되고 결과 창을 보면 커서(_)가 깜박이며 마냥 기다립니다. 이 커서는 6행의 scanf 함수를 실행한 결과로 값을 입력하기 전까지 그 이후의 문장은 실행하지 않습니다. 여기서 원하는 정수를 입력하면 그 값이 변수 a 에 저장됩니다. 10을 입력하면 a에 10이 저장되고 다음 문장인 7행이 실행되어 입력된 10이 출력됩니다.

 

 

scanf 함수 사용의 유의점

 

 

1. scanf 함수에서 변수명을 지정할 때는 &을 붙여야 합니다.

 

변수의 값을 출력할 때는 변수명만 사용하지만 입력할 때는 변수명 앞에 & 기호를 붙여야 합니다. & 기호는 변수의 주소를 구하는 연산자입니다. 참고로 문자열은 배열명에 & 기호를 붙이지 않습니다. 다음 게시글에 문자와 문자열 입력에 대한 글을 올리겠습니다.

 

 

2. scanf 함수에서 사용한 변환 문자와 맞는 형태의 데이터를 입력해야 합니다.

 

키보드로 입력하는 데이터는 모두 문자로 처리됩니다. scanf 함수는 변환 문자를 보고 정수로 변환할지 실수로 변환할지 아니면 그냥 문자열로 입력할지를 판단합니다. 그런데 만약 변환 문자와 다른 데이터가 입력되면 scanf 함수는 변환을 포기하고 실행을 중단합니다.

 

예를 들어 %d를 지정했는데 abc를 입력하면 정수로 변환할 수 없으므로 함수는 실행을 끝냅니다. 물론 그 이후의 프로그램을 계속 진행되는데 이 경우 변수에 값이 입력되지 않으므로 scanf 함수 실행 이전에 변수에 있던 값이 계속 사용됩니다. 결국 입력에 실패하면 변수 a에 있던 쓰레기 값이 그대로 출력됩니다.

 

 

scanf 함수의 응용

 

 

scanf 함수는 여러 개의 변환 문자를 나열하여 한 번에 2개 이상의 변수에 값을 입력할 수 있습니다.

 

예를 들어 int 형 변수 a와 double형 변수 b에 입력한다면 다음과 같이 사용합니다.

 

scanf("%d%lf", &a, &b);

 

변환 문자들은 큰따옴표 안에 이어서 나열하며 변수 사이는 콤마로 구분합니다. 데이터를 입력할 때는 두 값을 구분해야 하는데 예제를 통해 확인해보겠습니다.

 

#include <stdio.h>

int main(void) {
   
    int age;
    double height;
    
    printf("나이와 키를 입력하세요 : ");
    scanf("%d%lf", &age, &height);
    printf("나이는 %d살, 키는 %.1lfcm입니다.\n", age, height);
    
    return 0;
}

/*
<Run>
나이와 키를 입력하세요 : 20 185.5
나이는 20살, 키는 185.5cm입니다.
*/

 

8행은 입력받기 전 안내 메세지를 출력하는 부분입니다. 입력받는 건 9행의 함수인데, 입력할 때 나이와 키를 스페이스바를 눌러 공백으로 구분해야 합니다. 또는 Tap 이나 Enter 을 눌러 구분할 수도 있습니다.

댓글