반응형
키보드 입력에 사용되는 scanf함수에 대하여 알아보겠습니다.
사실 scanf함수는 배열과 포인터가 바탕이지만 자주 사용되는 함수이므로 미리 배워보도록 하겠습니다. scanf함수는 printf함수와 매우 비슷하면서도 상반된 기능을 제공합니다.
scanf("%d", &number);
언뜻보기에도 printf함수와 비슷하죠? 위에 나타난 함수의 이미는 키보드로부터 정수를 입력받아서, 변수 number에 저장하라는 뜻입니다. 단, 여기서 저장할 변수 앞에는 '&'기호를 붙여주는데요, 사실 이 기호는 연산자입니다. 해당 변수의 주소값을 얻게되는거죠... 여기서부터는 나중에 배울 포인터의 개념에 해당하므로 기회가 된다면 나중에 좀 더 자세하게 알아보도록 하겠습니다. 즉, scanf함수는 printf함수와는 달리 변수의 이름말고 값을 저장할 변수의 주소를 묻습니다. 그래서 연산자 '&'를 사용하여 주소 값을 전달해주는 겁니다^^ 중요한 내용은 여기까지 입니다. 쉽죠~????ㅋㅋㅋ
scanf("%d", &number)은 정수형 값을 입력 받고
scanf("%lf", &number)은 실수형 값을 입력 받습니다.
그리고 char형이나 short형, int형은 %d를 사용하지만 int형보다 큰 값, long long형처럼 큰 자료형은 %lld를 사용합니다^-^
그렇다면 scanf함수는 하나의 값만 입력받을 수 있을까요? 아닙니다. printf함수와 마찬가지로 여러값을 동시에 입력받을 수 있습니다.
scanf(" %d %d %d", &number1, &number2, &number3);
눈치채셨나요? 서식문자 사이에 공백이 존재합니다. 이는 각각의 값을 구분해주는 기준인거죠~ 여기서 말하는 공백은 스페이스바, 탭, 엔터키의 입력을 말합니다. 예를들어 3가지의 값을 입력할때 1 2 3 이런식으로 또는 1 엔터, 2 엔터 3엔터, 이런식으로 입력이 가능하다는거죠. 그리고 항상 데이터의 입력부분의 마지막은 엔터키로 마무리 해줍니다^-^
그렇다면 또 한가지 의문점이 생길 수 있습니다. 데이터의 입력을 구분하기 위해서 공백 이외의 문자를 사용할 수 있을까 입니다. 역시 가능합니다. 다음 예제를 보겠습니다.
scanf(" %d - %d - %d", &number1, &number2, &number3);
scanf(" %d **- %d **- %d", &number1, &number2, &number3);
첫 번째 함수는 '-'로 , 두 번째 함수는 '**-'로 데이터의 입력을 구분합니다. 즉 scanf 함수에서는 서식문자 사이에 다른 문자가 존재하면 이를 데이터의 입력 형태를 지정하는 것으로 인식합니다.
scanf 함수에 대하여 이해가 좀 가셨나요~? 여기서 마치도록 하겠습니다^-^
반응형
'Basic > C/C++' 카테고리의 다른 글
[C언어] 제 12 강 : 비트연산자 (0) | 2012.01.16 |
---|---|
[C언어] 제 11 강 : 서식문자 (0) | 2012.01.16 |
[C언어] 제 10 강 : 메모리 구조와 변수 (0) | 2012.01.12 |
[C언어] 제 9 강 : 문자의 표현 (0) | 2012.01.12 |
[C언어] 제 8 강 : 제어문 (0) | 2012.01.11 |
[C언어] 제 6 강 : 함수 (0) | 2012.01.11 |
[C언어] 제 5 강 : 연산자 (0) | 2012.01.07 |
[C언어] 제 4 강 : 자료형 (0) | 2012.01.05 |
[C언어] 제 3 강 : 데이터의 출력 (0) | 2012.01.04 |
[C언어] 제 2 강 : 기본 문장 & printf 함수 (0) | 2011.12.26 |