feof(),,, 마지막 줄 두 번 안 읽게 하는 처리
data 파일의 내용
라고 가정하고,
fread() 함수로 data 파일의 내용을 읽어 오면
이렇게 맨 마지막줄이 한 번 더 출력되는 상황이 발생한다.
이럴 때는 어떻게 대처해야 할까?
아래와 같이 fread() 함수로 한 번 더 읽어서 fread() == 0 임을 판단 하여 TRUE 값을 반환 한다면 break로 루프를 빠져 나오게 처리하면 된다.
data 파일의 내용
Hanyang University
The College of Information and Communication
Major in Computer
(줄바꿈)
The College of Information and Communication
Major in Computer
(줄바꿈)
라고 가정하고,
fread() 함수로 data 파일의 내용을 읽어 오면
Hanyang University
The College of Information and Communication
Major in Computer
Major in Computer
The College of Information and Communication
Major in Computer
Major in Computer
이렇게 맨 마지막줄이 한 번 더 출력되는 상황이 발생한다.
이럴 때는 어떻게 대처해야 할까?
아래와 같이 fread() 함수로 한 번 더 읽어서 fread() == 0 임을 판단 하여 TRUE 값을 반환 한다면 break로 루프를 빠져 나오게 처리하면 된다.
while(!feof(fp)) { if(fread(&buf, 1, 1, fp) == 0) break; // 또는 if(fread(&buf, 1, 1, fp) == NULL) break; else fseek(fp, -1, SEEK_CUR); // 파일의 끝인지 확인하기 위해 1byte만큼 읽었으므로 // 파일포인터를 다시 1byte만큼 앞으로 되돌린다. }
'컴퓨터 > 언어,프로그래밍' 카테고리의 다른 글
execl함수와 execv함수의 사용법 (0) | 2009.05.23 |
---|---|
execl함수와 ∴ execv함수의 사용법 (0) | 2009.05.23 |
23 프로세스 (0) | 2009.05.22 |
fork를 이용해서 자식 1~10출력후 부모 1~10을 출력하는 프로그램 (0) | 2009.05.22 |
fork는 새로운 child Process를 실행 하는데 사용 합니다. (0) | 2009.05.22 |