feof(),,, 마지막 줄 두 번 안 읽게 하는 처리
data 파일의 내용
Hanyang University
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
이렇게 맨 마지막줄이 한 번 더 출력되는 상황이 발생한다.
이럴 때는 어떻게 대처해야 할까?
아래와 같이 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만큼 앞으로 되돌린다.
}
[프로그래밍] 리눅스 gcc 컴파일러 사용 방법 (옵션 정리) (0) | 2016.12.11 |
---|---|
[프로그래밍] fork를 이용해서 자식 1~10출력후 부모 1~10을 출력하는 프로그램 (0) | 2016.12.11 |
[프로그래밍] fork 는 프로세스를 복제하는 함수입니다. (0) | 2016.12.04 |
[프로그래밍] fork() 함수를 이용하여 프로세스를 생성하는 이유가 뭔가요? (0) | 2016.12.04 |
프로세스 (0) | 2016.12.02 |