본문 바로가기

C 언어

scanf 함수 사용법

scanf 함수의 호출을 위해서는 두 가지 정보(입력의 형식, 입력 장소)가 전달되어야 한다.

=> scanf("입력의 형식", &입력 장소)

 

1. 입력 장소

 

입력 장소는 변수를 의미한다. 변수를 선언할 때는 '자료형 + 변수 이름'의 형태로 하는데 이때 변수 이름이 입력 장소로 사용된다. 

#include <stdio.h>

int main() 
{
    int num1; // 변수 선언[자료형(int) + 변수 이름(num1)]
    scanf("입력의 형식", &num1);

    return 0;
}

 

2. 입력의 형식

 

입력의 형식은 서식문자를 사용한다.(%d, %o, %x)

 

%d: 10진수 정수의 형태로 데이터를 입력 받는다.

%o: 8진수 양의 정수의 형태로 데이터를 입력 받는다.

%x: 16진수 양의 정수의 형태로 데이터를 입력 받는다.

#include <stdio.h>

int main() 
{
    int num1; // 변수 선언[자료형(int) + 변수 이름(num1)]
    scanf("%d", &num1); // ("입력의 형식" , &입력 장소)

    return 0;
}

 

여기서 주의할 점은 num1에는 입력 받은 값을 10진수 정수의 형태로 보고 저장한다는 것이다. 즉, 12를 입력하면 12를 10진수로 인식하여 2진수(00000000 00000000 00000000 00001100)로 바꿔서 num1에 저장한다. 만약 scanf의 입력의 형식이 %o라면 12를 8진수로 인식하여 2진수(00000000 00000000 00000000 00001010)로 바꿔서 num1에 저장된다. 입력된 값을 당연히 10진수로 생각하고 8진수로 바꿔서 num1에 저장하는 것이 아니다.

 

아래의 코드 결과를 예측해보자.

#include <stdio.h>

int main() 
{
    int num1, num2, num3;
    printf("세 개의 정수 입력: ");
    scanf("%d %o %x", &num1, &num2, &num3);

    printf("입력된 정수 10진수 출력: ");
    printf("%d %d %d\n", num1, num2, num3);

    return 0;
}

입력 값을 모두 12로 주면 결과 값은 12 10 18이 나온다.

12를 8진수로 생각한다면 10진수로 변환했을 때 10이다. 만약 12를 8진수로 변환해서 num2에 저장한다고 생각했다면 출력값은 14가 나와야 한다.(12를 당연히 10진수로 생각한다면 8진수로 변환하면 14)

 

정리하면, scanf 함수는 입력의 형식과 입력 장소가 필요하다. 입력 받는 값을 입력 형식(10진수, 8진수, 16진수)의 형태로 데이터를 입력 받아 입력 장소에 저장한다.

'C 언어' 카테고리의 다른 글

printf 함수의 서식문자 종류 및 의미  (0) 2021.06.02