EOF(End Of File) 문서

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 로 약속되어 있습니다.

[질/답]
[홈으로]  [뒤 로]
[푼 후(0)]