본문 바로가기
Programming/C

[C 프로그래밍] scanf()로 값을 입력하자

by SpiralMoon 2017. 2. 10.
반응형

헤더 파일 : 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()와 마찬가지로 이런식으로도 사용 가능합니다.



scanf() 형식 지정자
형식 지정자의미
%d10진수 정수로 입력scanf("%d", &정수변수명);
%ffloat 형식으로 입력scanf("%f", &float변수명);
%lfdouble 형식으로 입력scanf("%lf", &double변수명);
%c문자로 입력scanf("%c ", &문자형변수명);
%s문자열로 입력scanf("%s", 문자형배열명);


(배열에 대해서는 나중 강의에서 알아보겠습니다)

정리 :

1. 프로그램이 실행중인 상태에서 사용자에 의한 값의 입력이 필요한 경우 scanf()를 사용한다.

2. scanf()는 초기화할 데이터의 자료형을 형식 지정자로 구분한다.

3. scanf()는 접근할 변수의 이름 앞에 &를 붙인다.

반응형

댓글