fseek

명칭
     fgetpos, fseek, fseeko, fsetpos, ftell, ftello, rewind — 스트림의 위치 변경

프로그램 라이브러리
     Standard C Library (libc, -lc)

서식
     <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, const fpos_t *pos) <sys/types.h> int fseeko(FILE
     *stream, off_t offset, int whence) off_t ftello(FILE *stream)

해설
     fseek() 함수는, stream 하지만 가리키는 스트림의 파일 위치 인디케이터(indicator)를 설정합니다. 새로운 위치는
     바이트 단위로 계측 되어 whence 그리고 지정된 위치에 offset 바이트를 더하는 것으로 얻을 수 있습니다.  whence 하지만
     SEEK_SET, SEEK_CUR, SEEK_END (으)로 설정되어 있는 경우, 오프셋(offset)는, 각각, 파일의 최초,
     인디케이터(indicator)의 현재 위치, 파일의 최후로부터의 상대 위치가 됩니다.  fseek() 함수의 호출로 문제가 발생하지
     않는 경우는, 스트림의 end-of-file 지시자가 클리어 되어 그 스트림에 대한다 ungetc(3) 함수의 효과는 삭제됩니다.

     ftell() 함수는, stream 하지만 가리키는 스트림의 파일 위치 인디케이터(indicator)의 현재의 값을 입수합니다.

     rewind() 함수는, stream 하지만 가리키는 스트림의 파일 위치 인디케이터(indicator)를 파일의 최초로 설정합니다.
     이것은, 스트림의 에러 인디케이터(indicator)가 클리어 되는 것 ( clearerr(3) (을)를 참조)를 제외하면, 이하와
     같은 결과가 됩니다.

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

     fseeko() 함수는 fseek() (와)과 같습니다만, 인수에는 long 대신에 off_t (을)를 취합니다.  (와)과 같이
     ftello() 함수는 ftell() (와)과 같습니다만, off_t (을)를 돌려줍니다.

     fgetpos() 함수와 fsetpos() 함수는, ( whence 를 SEEK_SET (으)로 설정했다 ) ftell() (이)나
     fseek() (와)과 같은 인터페이스로, 파일 오프셋(offset)의 현재의 값을 pos 하지만 참조하는 오브젝트로부터 설정하거나
     pos 하지만 참조하는 오브젝트에 보존하거나 합니다.  일부의 (UNIX 이외의) 시스템에서는, “fpos_t” 오브젝트가 복합
     오브젝트일지도 모르기 때문에, 이식성을 유지하면서 텍스트 스트림의 위치를 변경하기 위해서는, 이 routine에 의밖에 없는 것도
     있습니다.

반환값
     rewind() 함수는 값을 돌려주지 않습니다.

     The fgetpos(), fseek(), fseeko(), and fsetpos() functions return the
     value 0 if successful; otherwise the value -1 is returned and the global
     variable errno is set to indicate the error.

     성공해 종료하면(자), ftell() 및 ftello() (은)는 현재의 오프셋(offset)를 돌려줍니다. 그 이외의 경우는  -1
     이 돌려주어 글로벌 변수 errno 하지만 설정되어 에러를 나타냅니다.

에러
     [EBADF]            지정되었다 stream 하지만, 시크 할 수 있는 스트림이 아닙니다.

     [EINVAL]           fseek() 의 whence 인수가, SEEK_SET, SEEK_END, SEEK_CUR 의 어떤
                        것이기도 하지 않습니다.

     [EOVERFLOW]        ftell() (을)를 실행한 결과의 파일의 오프셋(offset)가 long 형의 오브젝트에서는
                        올바르게 표현할 수 없는 값이 되었습니다.

     fgetpos(), fseek(), fseeko(), fsetpos(), ftell(), ftello() 함수가 실패했을 때에는,
     routine fflush(3), fstat(2), lseek(2), malloc(3) 에 붙어 가리키고 있는 에러가 errno
     (으)로 설정되어 있는 일도 있습니다.

관련 항목
     lseek(2)

표준
     fgetpos(), fsetpos(), fseek(), ftell(), rewind() 함수는, ISO/IEC 9899:1990
     (“ISO C90”) 에 적합하고 있습니다.

     fseeko() (와)과 ftello() 함수는, Version 2 of the Single UNIX Specification
     (“SUSv2”) 에 적합하고 있습니다.