본문 바로가기
C언어

C언어 기초 5. scanf() 함수

by algosketch 2019. 8. 15.
  • scanf()

1) scanf()

 scnaf() 함수는 프로그램 사용자로부터 값을 입력받도록 하는 함수이다. 사용자가 변수의 값을 정할 수 있다.

int myScore;
printf("당신의 점수는? ");
scanf("%d", &myScore);
printf("내 점수는 %d점입니다.", myScore);
intput1
80
output1

당신의 점수는?

내 점수는 80점입니다.

 

실제 콘솔창에는 다음과 같은 결과가 보일 것이다.

당신의 점수는? 80

내 점수는 80점입니다.

 

 캡쳐가 제한되는 환경에서 작성하는 글이므로, 실제로 코드를 실행해보며 이 블로그에서 표현하는 방식에 익숙해지기를 바란다. 또한 이 표현 방식은 작성자가 임의로 만든 것이 아니다.

  이 코드에서는 변수 myScore의 값을 코드상에서 초기화하지 않고 사용자에게 그 권한을 넘기고 있다. 사용자가 80이라는 숫자를 입력 후 엔터를 누르면 myScore에는 80이라는 값이 들어간다. scanf() 함수란 무엇일까? 큰 따옴표("") 사이에는 서식문자(%d %s 등)가 들어간다. 큰 따옴표 뒤에는 콤마(,)로 구분하여 변수이름이 들어간다. 여기서 주의해야할 점은 변수의 이름이 그대로 들어가지 않고 앞에 엠퍼센트(&) 기호를 붙여야 한다. 그 이유는 지금은 설명할 수 없는 내용으로 이후에 설명하도록 하겠다.

 하나의 scanf() 함수에 여러 변수의 값을 입력해도 된다. 이 경우에는 공백으로 구분하며 엔터(개행문자 '\n')가 입력되기 전까지 받는다. 엔터로 구분해도 무관하다. 만약 코드에서 요구한 변수 개수 이상을 입력한 후 엔터를 누른다면 변수에 들어가지 못 한 값을든 입력 버퍼에 남아 있게 된다.(데이터가 소멸되지 않고 계속 입력하고 있는 상태 정도로 이해하자) 마지막으로 여러 값을 받는 코드와 입출력 결과를 소개하고 글을 마치겠다.

int apples, bananas;
printf("사과와 바나나의 개수는? ");
scnaf("%d %d", &apples, &bananas);
printf("사과: %d개\n바나나: %d개");
intput2
5 3
output2

사과와 바나나의 개수는?

사과: 5개

바나나: 3개

 

 간혹 가다 scanf("%d, %d", &apples, &bananas); 이런식으로 입력하는 경우가 있는데, scanf()함수에서 서식문자 %d사이에 콤마(,)를 넣으면 오류가 발생한다.