지금까지 우리는 printf() method를 통해 컴퓨터→사용자에 대한 정보 이동에 대해 알아보았습니다.

이번에는 사용자→컴퓨터에 대한 정보 이동을 통해 사용자가 프로그램과 소통?하는 법에 대해 알아보겠습니다.


아래 예제를 보겠습니다.

#include <stdio.h>
#include <stdlib.h>

int main() {
		int age;
		printf("Enter your age: ");
		scanf("%d", &age); 
		printf("You are %d years old", age);

}

우선 int age를 선언합니다. 다만, 이전과는 다르게 값을 지정해주지 않습니다. 이는 유저가 후에 컴퓨터에 정보 이동을 함으로써 직접 값을 지정해주게 하기 위함입니다.

그 후 scanf() method를 사용합니다. scanf() method는 printf() method와는 반대되게 유저가 특정 정보를 입력시킬 수 있습니다. 우리가 원하는 데이터 타입은 정수이기 때문에, %d format specifier를 적어줍니다. 그 다음에 &age를 적어주는데, 여기서 &은 포인터를 뜻합니다. 포인터는 조금 심화된 과정이기 때문에 추후에 설명하기로 하지만, 간단하게 설명하면 integer, float, character 모두 &를 적어줘야합니다.

위의 예제를 실행하면 커맨드 창에서 이렇게 나타납니다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/b7a6d2b0-b9de-4eb4-b6d3-919de799d8a6/Untitled.png

25살이라고 숫자를 적은 후 엔터를 눌러보았습니다.

scanf() method 후 나타난 printf() method도 age 값을 정상적으로 읽어 작동합니다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/1880d081-dac8-4486-9589-7f61958652e1/Untitled.png

한번 integer가 아닌 char를 적어보았습니다.

에러가 나타나는것이 아니라, age 값이 단순히 읽히지 않아 0으로 인식되었습니다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/b952d964-f24d-4ffc-a36e-75fce447d2f6/Untitled.png


이번에는 int가 아닌 double을 읽어봅시다.