C_C++/C_라이브러리_함수

(C언어) eof, _eof: 파일의 끝인지 검사한다

고니자니 2023. 2. 3. 12:03
반응형

#eof #_eof #파일 #끝부분

 

 

#include <io.h>
int eof(int handle);

파일의 끝부분인지 검사합니다.

eof 함수는 handle과 관련된 파일의 끝부분에 도달했는지 알려줍니다.

eof  함수는 현재 위치가 파일의 끝 부분인경우에는 1, 그렇지 않은 경우에는 0 반환합니다.

오류가 발생하면 -1을 반환하고 번역변수 errno를 EBADF(파일 번호(핸들)가 잘못되어 있음)로 설정합니다.

 

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <fcntl.h>
#include <io.h>
#include <sys/stat.h>

int main()
{
	int handle;
	char buffer[] = "C Language Programming.";
	char c;

	// 파일을 생성한다.
	handle = open("testeof.dat", O_CREAT | O_RDWR,
		S_IREAD | S_IWRITE);

	// 파일에 저장한다.
	write(handle, buffer, strlen(buffer));

	// 파일의 처음으로 이동한다.
	lseek(handle, 0L, SEEK_SET);

	// eof 함수를 이용해서 파일의 끝까지 이동한다.
	do {
		read(handle, &c, 1); // 한 문자를 읽는다.
		printf("%c", c);
	} while (!eof(handle));

	close(handle);

	return 0;
}

eof 함수

 

 

비주얼스튜디오에서는 아래의 코드를 사용합니다.

#define _CRT_SECURE_NO_WARNINGS  // Visual Studio
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <fcntl.h>
#include <io.h>
#include <sys/stat.h>

int main()
{
	int handle;
	char buffer[] = "C Language Programming.";
	char c;

	// 파일을 생성한다.
	handle = _open("testeof.dat", O_CREAT | O_RDWR,
		S_IREAD | S_IWRITE);

	// 파일에 저장한다.
	_write(handle, buffer, strlen(buffer));

	// 파일의 처음으로 이동한다.
	_lseek(handle, 0L, SEEK_SET);

	// eof 함수를 이용해서 파일의 끝까지 이동한다.
	do {
		_read(handle, &c, 1); // 한 문자를 읽는다.
		printf("%c", c);
	} while (!_eof(handle));

	_close(handle);

	return 0;
}
반응형