FSEEK(3)

이름
fgetpos, fseek, fsetpos, ftell, rewind - 스트림의 위치를 재배치 시킨다.

사용법
#include <stdio.h>

int fseek( FILE *stream, long offset, int whence);
long ftell( FILE *stream);
void rewind( FILE *stream);
int fgetpos( FILE *stream, fpos_t *pos);
int fsetpos( FILE *stream, fpos_t *pos);

설명
fseek 함수는 stream이 가리키는 스트림을 위한 파일 위치 지정자를 설정한다. 바이트로 측정되는 새 위치는 whence가 지정하는 위치에 offset 를 더하여 얻어진다. 만일 whence 를 SEEK_SET, SEEK_CUR, 또는 SEEK_END로 설정한다면, 오프셋은 각각 파일의 시작, 현재 위치 지정자, 또는 EOF와 관계가 된다. fseek 함수의 연속적인 호출은 스트림을 위한 EOF 지정자를 지우고 같은 스트림에서 ungetc(3) 함수의 효과를 원상태로 돌린다.

ftell 함수는 stream이 가리키는 스트림을 위해 파일 위치 지정자의 현재 값을 얻는다.

rewind 함수는 stream 이 가리키는 스트림을 위한 파일 위치 지정자를 파일의 시작으로 설정한다. 다음은:

    (void)fseek(stream, 0L, SEEK_SET)

스트림을 위한 에러 지정자도 지운다는 것을 제외하고 같다. ( clearerr(3)).

fgetpos 와 fsetpos 함수는 ftell 과 fseek 과 동일하게 선택할수 있는 인터페이스이며 (whence를 SEEK_SET로 설정), pos가 가리키는 객체나 객체에서 파일 오프셋의 현재 값을 설정하고 저장한다. 몇몇 비-UNIX 시스템에서 fpos_t 객체는 복잡한 객체이며 이들 루틴들은 호환성을 위해 텍스트 스트림을 재배치시키는 유일한 방법이다.

반환값
rewind 함수는 어떤 값도 반환하지 않는다. 성공적인 완성시, fgetpos, fseek, fsetpos 는 0을 반환하고 ftell 은 현재 오프셋을 반환한다. 그렇지 않으면 -1이 리턴되며 전역 변수 errno는 에러를 가리키도록 설정된다.

에러

EBADF
    지정된 stream 은 탐색가능한 스트림이 아니다.

EINVAL
    argument to fseek 의 whence 인자가 SEEK_SET, SEEK_END, 또는 SEEK_CUR 가 아니다.

함수 fgetpos, fseek, fsetpos, 그리고 ftell 은 실패할수 있으며 이때 루틴 fflush(3), fstat(2), lseek(2), 그리고 malloc(3)을 위해 지정된 에러중 하나로 errno 를 설정한다.

호환
fgetpos, fsetpos, fseek, ftell, 그리고 rewind 함수는 ANSI X3.159-1989 (``ANSI C'')과 호환된다.

관련 항목
lseek(2)

역자
정강훈 <skyeyes@soback.kornet.net>, 2001년 4월 30일