(C/C++) scanf() 입력 함수

1. scanf() 함수란 무엇입니까?

C언어의 표준입력 함수로 C++에서는 cin을 사용하지만 scanf()함수는 속도 등 특정 부분에서 유리하기 때문에 자주 사용한다. printf()와 마찬가지로 다양한 형식의 입력을 받아들입니다.

2. scanf() 사용

헤더는 stdio.h입니다.

#include <stdio.h>

프로토타입은 아래와 같습니다.

int scanf(const char* restrict format, ...);

printf()에 대한 이전 기사에서 볼 수 있듯이 scanf의 f도 형식 지정자에서 파생됩니다.

입력할 텍스트의 형식을 입력한 후 입력할 변수를 하나씩 작성합니다.

예를 들어 보겠습니다.

#include <stdio.h>

int main(void){
 int level;
 
 printf("사용자의 레벨을 입력하세요: ");
 scanf("%d", &level);
 
 printf("레벨: %d", level);
 
 return 0;
}

scanf()로 %d라는 정수를 받아서 level에 저장하는 구문입니다. 그리고 ‘&’ 기호는 주소 연산자로, 입력한 데이터를 뒤에 있는 변수에 저장한다는 의미입니다. 주소 연산자는 포인터 개념이므로 자세한 내용은 기사를 읽어보시면 도움이 될 것입니다.

3. 형식 지정자의 공존

여러 형식 지정자를 사용할 수 있습니다. printf()와 마찬가지로 포맷 지정자의 순서와 저장할 변수의 순서가 같아야 하며 입력 데이터는 공백으로 구분됩니다.

사용 예는 다음과 같습니다.

#include <stdio.h>

int main(){
    int a, b;

    printf("16진수로 변환할 10진수 두 개를 입력하세요: ");
    scanf("%d %d", &a, &b);

    printf("16진수로 변환한 값은 %x %x 입니다.", a, b);
}
<실행 결과>
16진수로 변환할 10진수 두 개를 입력하세요: 275 300
16진수로 변환한 값은 113 12c 입니다.