#8 입력(1)
scanf()를 이용해 데이터를 입력받고 저장해봅시다
Table Of Contents
scanf()
hello world!를 출력할 때 printf()
함수를 이용했던 것처럼, 입력을 받고 싶다면 scanf()
함수를 사용하면 됩니다.
int main(void) { int number; scanf("%d", &number); return 0; }
scanf()
함수는 이렇게 사용합니다.
전에 배웠던 것처럼, 어떤 데이터를 입력받아서 저장하기 위해서는 미리 저장 공간을 선언해야 합니다. 저는 int number;
를 통해서 정수를 저장할 수 있는 number라는 이름의 저장 공간을 만들었습니다.
scanf() 함수는 괄호 안에 형식(format) 문자열을 넣어 줘야 합니다.
형식 문자열
우리는 number가 정수를 저장할 것이라고 미리 선언했습니다. 입력으로 받는 것도 정수여야 a 안에 저장할 수 있겠죠?
형식 문자열은 scanf()
함수가 어떤 내용을 읽어들일 지 지정하는 문자열입니다.
위에서는 %d
라는 문자열을 사용했네요. %d
라는 형식 지정자는 10진수 정수(decimal)를 뜻합니다.
형식 문자열에 대해서 자세한 내용은 아래 링크에서 확인할 수 있습니다.
https://www.cplusplus.com/reference/cstdio/scanf/
이렇게 %d라고 입력의 형식을 지정해줬다면, 컴퓨터는 우리가 10을 입력했을 때, 그것을 10진수 정수라고 인식할 수 있습니다. 전에 말했듯이, 이렇게 입력받은 내용은 저장 공간에 저장해야 합니다.
&number
라고 쓰인 부분이 그 역할을 담당합니다.
number
앞의&
는number
의 주소를 불러 오기 위해서 사용합니다.scanf()
함수는 저장공간에 데이터를 저장할 때, 저장공간의 이름이 아니라 주소를 필요로 합니다. 변수 앞에&
를 붙이면 해당 변수의 주소를 알 수 있습니다.
요약
정리하자면, scanf(”%d”, &number);
는 **"정수 하나를 읽어들여서 number라는 이름의 저장공간에 저장해라"**라는 뜻이 되겠네요.
추가로 정수 말고 다른 자료형을 입력받는 방법도 알아봅시다.
- 실수 입력
또는int main(void) { float number; scanf("%f", &number); return 0; }
정수를 입력받을 때는int main(void) { double number; scanf("%lf", &number); return 0; }
%d
라는 형식 지정자를 사용했지만, float형을 입력받을 때는%f
, double형을 입력받을 때는%lf
를 사용합니다. - 문자 입력
char형을 입력받을 때는int main(void) { char character; scanf("%c", &character); return 0; }
%c
를 사용합니다.
두 정수 입력받기
하지만 정수 하나로는 계산기를 만들지 못합니다.
정수 2개를 입력받으려면
int main(void) { int number1, number2; scanf("%d", &number1); scanf("%d", &number2); return 0; }
처럼 하면 됩니다.
정수를 한번에 2개, 3개씩 입력받는 것도 가능합니다.
scanf(”%d%d”, &number1, &number2);
는 **"정수 두 개를 읽어서, 첫 번째로 읽은 값은 number1에, 두 번째로 읽은 값은 number2에 저장하라"**라는 뜻입니다. 입력받는 정수가 하나씩 늘어날 때마다, 변수의 이름을 콤마로 구분해서 뒤에 추가해주세요.