헤더 파일 : stdio.h
함수의 원형 : int scanf(const char *format, … );
함수의 사용 방법 : scanf("형식 지정자", &변수);
함수의 기능 : 콘솔창에서 변수에 값을 입력하는 함수
printf()가 출력 함수라면 scanf()는 입력 함수입니다.
코드 내에서 정해진 값이 아닌
프로그램이 진행중인 상태에서 사용자의 입력을 받아 변수에 값을 대입하려고 하는 경우
scanf()를 사용합니다.
이 불쌍한 예제를 봅시다.
a가 선언되었지만 초기화가 되지 않은 상태에서 출력을 하려고 합니다.
실행해봅시다.
초기화가 되지 않은 변수를 출력을 하려고 하다니
당연히 오류가 뜨거나 쓰레기값이 출력됩니다.
위 소스에 scanf() 함수를 추가해줍니다.
scanf("%d", &a)의 뜻은
변수 a의 주소에 접근해서 정수형 데이터를 입력하겠다는 뜻입니다.
실행해봅시다.
scanf()가 printf()보다 앞에 존재하고 있으므로
콘솔창은 입력값이 들어올 때 까지 계속 대기합니다.
정수 값을 입력해줍시다.
입력이 끝났다는 것을 알리려면 Enter키를 눌러줍니다.
오류가 나던 아까와 달리
수정한 코드대로 a에 100이 초기화 되어
printf("%d", a)가 정상적으로 작동 했습니다.
변수는 메모리 공간 어딘가에 주소와 이름과 데이터를 가지고 존재하고 있습니다.
&는 변수의 주소에 접근하는 기호 입니다.
위의 예제에 맞춰 간단하게 말하면
scanf("%d", &a)는 a의 내용을 정수형으로 초기화하겠다는 뜻입니다.
printf()와 마찬가지로 이런식으로도 사용 가능합니다.
형식 지정자 | 의미 | 예 |
---|---|---|
%d | 10진수 정수로 입력 | scanf("%d", &정수변수명); |
%f | float 형식으로 입력 | scanf("%f", &float변수명); |
%lf | double 형식으로 입력 | scanf("%lf", &double변수명); |
%c | 문자로 입력 | scanf("%c ", &문자형변수명); |
%s | 문자열로 입력 | scanf("%s", 문자형배열명); |
(배열에 대해서는 나중 강의에서 알아보겠습니다)
정리 :
1. 프로그램이 실행중인 상태에서 사용자에 의한 값의 입력이 필요한 경우 scanf()를 사용한다.
2. scanf()는 초기화할 데이터의 자료형을 형식 지정자로 구분한다.
3. scanf()는 접근할 변수의 이름 앞에 &를 붙인다.
'Programming > C' 카테고리의 다른 글
[C 프로그래밍] 연산자 - 산술 연산자 (0) | 2017.02.10 |
---|---|
[C 프로그래밍] printf()와 이스케이프 시퀀스 (0) | 2017.02.10 |
[C 프로그래밍] printf()와 형식 지정자 (0) | 2017.02.10 |
[C 프로그래밍] 변수와 자료형 4 (0) | 2017.02.10 |
[C 프로그래밍] 변수와 자료형 3 (0) | 2017.02.10 |
댓글