scanf ( )
scanf( )함수는 입력 상황에서 사용자 키보드를 검사함으로써 키보드 부터 입력된 데이터를 읽어 들이는 함수 입니다. 읽어 들인 데이터는 변수에 저장하죠. 또한 scanf( )도 printf( )와 마찬가지로 함수의 이름과 내용(의미, 형식)이 사전에 정의되어 있는 라이브러리 함수 이므로 함수가 선언되어 저장된 헤더 파일이 필요합니다.
아래의 코드를 직접 작성하고 실행해 봅시다.
#include <stdio.h> main () { int a = 0; scanf ( "%d", &a); printf ( "%d", a); }
실행결과
위 프로그램을 실행하면 커서가 깜빡이면서 값의 입력을 기다리며, 값을 넣으면 해당값이 출력됩니다.
- 5행에서 365라는 값을 입력하고 Enter키를 누르면 6행의 printf( )함수에 의해 값 385가 출력됩니다.
- scanf( )에서 사용 가능한 서식 지정자는 printf( )와 같으며 입력 받을 값의 자료형에 해당하는 서식 지정자를 큰 따옴표(“ ”)안에 포함시키면 됩니다. 단, 출력은 하지 않으므로 printf( )처럼 출력 데이터를 첨가하거나, 특수문자를 사용할수 없습니다.
- scanf()를 사용할 때 가장 주의할 점은 값이 입력될 변수의 이름 앞에 참조 연산자’&’를 붙여야합니다. ‘&’연산자는 변수의 메모리 주소를 알려주는 표현으로, 만일 ’&’ 없이 변수 이름만 작성하면 오류가 발생합니다.
(자세한 사항은 연산자 토픽에서 나옵니다.)
scanf( ) 함수의 오류
scanf( )함수의 이름과 내용(의미, 형식)이 사전에 정의되어 있는 라이브러리 함수로 프로그램에 헤더 파일이 없으면 오류가 발생합니다.
아래의 코드를 직접 작성하고 실행해 봅시다.
main () { int a; scanf ( "%d", &a); }
실행결과
위 프로그램을 실행하면 4행에서 오류가 발생합니다.
- 헤더 파일을 지우고 프로그램을 실행하면 4행에서 오류가 발생하고, main( ) 함수 내부의 scanf( )의 의미가 미리 정의 되지 않았다는 메세지를 보여줍니다.
scanf( ) 함수의 활용
scanf( )함수를 이용하여 실수, 문자, 그리고 문자열 등 다양한 데이터를 직접 입력받을 수 있습니다.
아래의 코드를 직접 작성하고 실행해 봅시다.
#include <stdio.h> main () { float a; char b; char c [10]; scanf ( "%f %c %s", &a, &b, &c); printf ( "%f %c %s", a, b, c); }
실행결과
위 프로그램을 실행하고 원하는 값을 입력할때 큰 따옴표(" ")안에 있는 형식과 동일하게 입력해야 합니다.
- 4~6행에서 한 개의 실수를 저장하기 위한 변수 a, 한 개의 문자를 저장하기 위한 b, 여러 개의 문자(문자열)를 한번에 저장하기 위한 배열 변수 c[ ]를 선언했습니다.
- 7행에서 scanf( )함수를 통해 각 변수에 저장할 값을 입력합니다. 이때 변수의 성격에 따라 서로 다른 서식 지정자를 사용하는 점에 주의합니다.
- 8행에서 printf( )함수를 통해 결과값을 출력합니다.
다음 토픽에서는 지금까지 배웠던 내용들을 이용하여 직접! 문제를 풀어봅시다.