※요약

fseek : 개방된 파일에서 파일 포인터의 위치를 설정한다.



※특징

fseek 함수를 이용해 읽어온 파일의 크기를 구할 수도 있다.

fseek( stream, 0L, SEEK_END );
int nFileSize = ftell( stream );


※함수 원형 및 설명

int fseek( FILE *stream, long offset, int origin );
//stream : 개방된 FILE 구조체의 포인터
//offset : origin으로부터의 오프셋, 양수 또는 음수 가능
//origin : SEEK_SET, SEEK_CUR, SEEK_END 중 하나의 값
//		SEEK_SET : 파일 시작점(BOF)에서 offset만큼 이동
//		SEEK_CUR : 파일 포인터의 현재 위치에서 offset만큼 이동
//		SEEK_END : 파일의 끝(EOF)에서 offset만큼 이동
//반환값 : 0 (실패 시 0이 아닌 값)


※예제

#include <stdio.h>

#define print(n) printf( "%ld\n", n )

int main( )
{	
	FILE *pFile = NULL;

	pFile = fopen( "d:\\Text.txt", "w+" );
	if( pFile == NULL )
	{
		//에러 처리
	}
	else
	{
		print( ftell(pFile) );			//fopen 후 파일 포인터 위치 확인

		fputs( "0123456789", pFile );
		print( ftell(pFile) );			//fputs 후 파일 포인터 위치 확인

		fseek( pFile, 0L, SEEK_SET );    //처음 위치로 설정
		print( ftell(pFile) );			//fseek 후 파일 포인터 위치 확인

		fseek( pFile, 6L, SEEK_SET );    //처음 위치에서 6번 뒤로 설정
		print( ftell(pFile) );			//fseek 후 파일 포인터 위치 확인

		fseek( pFile, -2L, SEEK_CUR );    //현재 위치(6)에서 2번 앞으로 이동
		print( ftell(pFile) );			//fseek 후 파일 포인터 위치 확인

		fseek( pFile, 0L, SEEK_END );    //파일 끝으로 이동
		print( ftell(pFile) );			//fseek 후 파일 포인터 위치 확인

		fclose( pFile );
	}

	return 0;
}


+ Recent posts