본문 바로가기

Programming/C Language

scanf 함수?

이번엔 scanf함수를 간략하게 소개하고자 하고 추후에 포인터에 대해 배우면 scnaf에 대해 나머지 내용을 설명하도록 하겠다.


키보드로부터의 정수입력을 위한 scanf함수

scanf함수를 이용하면 키보드로부터 다양한 Data를 입력 받을수 있다 , 일단 정수로 시작해보자

scanf함수의 이용법은 printf함수와 매우 유사하나 성격은 전혀 다르다.


int main(void)

{

int num;

scanf("%d",&num);                //키보드로부터 입력된 정수를 num에 저장시켜라.

. . . .

}


이게 scanf 함수의 선언방법이다. 매우 간단하다..................
다만 , 주의할점은 Data Type이다.

num이 int형 변수로 선언되었으니 , 같은 Data Type으로 Data를 받아주기위해 %d 서식문자를 이용한것 ,

그리고 scanf 함수 호출시 num변수앞에 '&'이라는 기호가 붙음에 주목하자

& 연산자는 지금으로썬 위 코드와 같이 scanf함수의 호출을 위해서는 입력된 데이터를 저장할 변수의 이름 앞에 &연산자를 붙여야 한다고만 기억하자
추후에 포인터의 개념을 설명한 후에 좀 더 자세히 설명하도록 하겠다.

그러면 예시를 통해 scanf함수를 좀 더 완벽히 알아보자

 위의 예제를 살펴보면 , scanf가 아닌 scanf_s가 쓰여있음에 의아해 할수있는데
scanf함수를 이용하여 프로그램을 실행시키면 오류문이 뜬다.
VS2010 이상 컴파일러에서는 scanf함수가 구조적으로 안정하지 못하여 여러 위험을 안고있는 함수라고 판단하여 문제점을 보완하여 나온 함수가 scanf_s 함수이다.
기존 scanf함순느 char형이나 문자열을 넣을때 받을수 있는 문자열의 사이즈를 넣지않아도 사용이 가능했었는데 이것이 오버플로우 문제점을 초래하기때문에 보완하였다.

그냥 우리는 scanf 대신 scanf_s라고 입력하여 함수를 사용하면 된다!


scanf함수는 서식문자의 수를 조절하여 입력받는 데이터의 수를 조절할 수 있고 , 서식문자를 변경하여 입력받는 데이터의 유형 또한 달리할수있다.


또한 , 여러개의 데이터를 한번의 scanf함수 호출을 통해 입력받고자 할때는 이렇게 선언하면 된다.


scanf_s("%d %d %d ", &num1,&num2,&num3);


서식문자들 사이를 공백 으로 데이터를 구분한다.

'Programming > C Language' 카테고리의 다른 글

아스키(ASCII)코드 ?  (0) 2017.10.30
기본 자료형 정리  (0) 2017.10.30
연산자(Operator) 란?  (0) 2017.10.30
변수의 자료형 (Data Type)  (0) 2017.10.30
변수 (Variable) 란 ?  (0) 2017.10.30