[C++] 파일입출력) EOF에 대한 이해2015. 4. 15. 10:14
파일입출력을 사용할때 eof에 대해 이해해보자
eof 는 f
stream객체가 EOF를 만나면 상수 -1 로서, 참값을 반환한다. (조건식에서 0은 거짓, 나머지는 참)
eof 는 파일의 끝에 도달하면 반환(-1)을 한다
== 파일의 끝에 도달하면 eof 가 반환이 된다
파일입출력에 대한 예제코드를 보자
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
#include <iosteam>
/**/
#include <fstream>
using namespace std;
ofstream fout; //화면에서 파일로
ifstream fin; //파일에서 화면으로
void main()
{
/* 배열을 어디까지 사용했는지 idx 변수 */
int accNum;
/* 파일 읽기를 위한 변수 */
int count = 0;
accNum = takeFile(accArr, count); //accArr은 클래스 변수
switch(num)
{
case EXIT:
fout.open("accountInfo.txt");
break;
}
}
void takeFile(Account* acc, int* _count)
{
/* 프로젝트 안에 있는 파일을 부를 시, 그냥 파일이름만 쓰면 된다
아닐시, 모든 경로를 적어주어야 한다. */
fin.open("accountInfo.txt");
while(1)
{
/* 파일에서 1개를 읽어옵니다 */
fin >> accArr[_count].user_Name >> accArr[_count].user_ID >> accArr[_count].money;
/* 읽을 것이 없다면 루프를 빠져나갑니다.
[예제부분] */
if( fin.eof() )
{
cout << "no data.." <<endl;
break;
}
/* 몇개를 읽었는지 배열 idx 카운트다운 해줍니다. */
_count++;
}
fin.close();
}
|
cs |
예제 코드 조건문에서
if( fin.eof()) // if eof 가 참이라면 == 파일의 끝에 도달했다면
으로 이해할 수 있다
(cf. if의 조건식에서, 0은 거짓이고 나머지는 모두 참으로 인식한다)
반대로,
! fin.eof() 는 eof 의 반대이므로
( cf. ! 는 논리 NOT 연산자 / 참 일 경우 거짓을, 거짓 일 경우 참을)
파일의 끝에 도달하지 않았다면
으로 이해할 수 있다
/* C 에서 EOF */
if( fscanf("~", ~) != EOF)
{
//문자열 끝에 도달하지 않았다면
}
else
{
//문자열 끝에 도달했다면
}
'Language > C++' 카테고리의 다른 글
2차원 배열 동적할당 & 해제 (0) | 2015.04.24 |
---|---|
[C++] 강제 형변환 & 자동 형변환 (0) | 2015.04.24 |
[C 기초] 자리맞춰서 출력하기 (2) | 2015.04.20 |
중위 표기법 / 후위 표기법 이해 (0) | 2015.04.16 |
정수 출력 (0) | 2015.04.14 |