[C/C++] EOF

2020. 9. 4. 22:10Programming Language/C · C++

문제를 풀다 보면, 입력을 받을 때 종료조건이 없을 때가 있다. (입력을 얼마나 받는지 모를 때)

그럴때,

 

1. C

EOF(End Of File)을 이용한다.

EOF 의 값은 -1로, stdio.h에 정의되어 있다.

#define EOF -1

scanf는 성공적으로 입력받은 문자를 return하는데,

에러가 있거나 파일의 끝을 만났을 때 (EOF일때) -1을 리턴한다.

파일의 끝까지 입력받으려면

1. while (scanf("%d", &n) != EOF)
2. while (scanf("%d", &n) != -1)
3. while (~scanf("%d", &n))

와 같이 써주면 된다.

 

BOJ-10951 A+B - 4 에서 scanf로 a,b 모두를 성공적으로 받을 때는 2를 return한다.

따라서 입력 조건을 다음과 같이 쓸 수 있다.

1. while (scanf("%d %d",&a,&b)!=EOF)
2. while (scnaf("%d %d",&a,&b)==2)

 

2. C++

C++에서 EOF를 만나면 cin.eof()의 값이 true가 된다.

파일의 끝까지 입력받으려면

1. while(true)
     {
       cin >> a >> b;
       if(cin.eof())
         break;
     }
     
2. int a, b;
    while(cin >> a >> b){
       
    }

이렇게 하면 된다.

반응형

'Programming Language > C · C++' 카테고리의 다른 글

Call by.. what?  (0) 2021.01.14