scanf 함수의 원형입니다.
함수 앞에 int 가 보이나요? scanf 함수는 실행 후 정수형 값을 받아온다는 것입니다.
#include <stdio.h> int main() { int a,b,c; printf("%d\n",scanf("%d",&a)); // a 를 입력으로 받아서 1 이 출력 printf("%d\n",scanf("%d %d",&a,&b)); // a b 를 입력으로 받아서 2 가 출력 printf("%d\n",scanf("%d %d %d",&a,&b,&c)); // a b c 를 입력으로 받아서 3 이 출력 }입력으로 1 2 3 4 5 6 을 주면 출력 결과는 1 2 3 이 출력. scanf 함수는 읽은 데이터수가 반환 됩니다. 그런데 ... 데이터를 읽으려고 하는데 읽을 데이터가 없습니다. 이 경우 모든 비트에 1 을 채워서 돌려 받게 되고 이는 10 진수로 -1 을 의미합니다. #define EOF -1 로 정의해 두면 -1 보다는 더 가독성이 있어 보입니다. 이는 stdio.h 헤더 파일에 선언되어 있습니다.
한 줄에 두 개의 수를 읽어서 합을 출력하는 프로그램을 작성해 봅니다. 입력으로 몇 줄이 입력될지는 모르는 경우 입니다.#include <stdio.h> int main() { while ( scanf(%d %d",&a,&b) != EOF ) { //EOF 대신에 -1 을 주어도 됩니다. printf("%d\n",a+b); } }실행 후 데이터를 입력으로 주다 ctrl -d(ctrl 키를 누른 상태에서 d) 를 입력으로 줍니다.유닉스(리눅스)에서는 ctrl - d ,windows 에서는 ctrl - z 가 EOF 로 약속되어 있습니다.