이번엔 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 |