#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라는 이름의 저장공간에 저장해라"**라는 뜻이 되겠네요.

추가로 정수 말고 다른 자료형을 입력받는 방법도 알아봅시다.

두 정수 입력받기

하지만 정수 하나로는 계산기를 만들지 못합니다.

정수 2개를 입력받으려면

int main(void) { int number1, number2; scanf("%d", &number1); scanf("%d", &number2); return 0; }

처럼 하면 됩니다.

정수를 한번에 2개, 3개씩 입력받는 것도 가능합니다.

scanf(”%d%d”, &number1, &number2);는 **"정수 두 개를 읽어서, 첫 번째로 읽은 값은 number1에, 두 번째로 읽은 값은 number2에 저장하라"**라는 뜻입니다. 입력받는 정수가 하나씩 늘어날 때마다, 변수의 이름을 콤마로 구분해서 뒤에 추가해주세요.