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 입니다.