[C/C++] EOF
2020. 9. 4. 22:10ㆍProgramming 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 |
---|