#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에서의 위치를 변경하기 위해서
사용한다. 새로운 위치는 offset을 통해서
바이트 단위로 지정할 수 있다. 위치 변경을 위해서는 기준점이 있어야 할건데,
이는 whence를 이용해서 결정할 수 있다.
whence는 위치변경을 위한 기준점에 따라서 SEEK_SETSEEK_CUR, SEEK_END가 있다.
SEEK_SET는 시작점을, SEEK_CUR은 현재 스트림에서의 위치를, SEEK_END는
스트림의 마지막점을 기준으로 한다.
ftell()함수는 stream에서의 현재 위치를 구하기
위해서 사용한다.
rewind()함수는 stream에서의 위치를 처음으로 되돌리기
위해서 사용한다. rewind()는 fseek()를 이용해서 동일하게 구현할 수 있다.
(void)fseek(stream, 0L, SEEK_SET)
fgetpos()와 fsetpos()는 ftell()과 fseek()의 조합(whence는 SEEK_SET)이다.
즉 위치를 변경하고 현재의 위치값을 fpost_t 객체에 되돌려준다.
1장. fseek(3)
시트림위치의 재지정
1.1. 사용법
1.2. 설명
fseek()함수는 stream에서의 위치를 변경하기 위해서 사용한다. 새로운 위치는 offset을 통해서 바이트 단위로 지정할 수 있다. 위치 변경을 위해서는 기준점이 있어야 할건데, 이는 whence를 이용해서 결정할 수 있다. whence는 위치변경을 위한 기준점에 따라서 SEEK_SET SEEK_CUR, SEEK_END가 있다. SEEK_SET는 시작점을, SEEK_CUR은 현재 스트림에서의 위치를, SEEK_END는 스트림의 마지막점을 기준으로 한다.
ftell()함수는 stream에서의 현재 위치를 구하기 위해서 사용한다.
rewind()함수는 stream에서의 위치를 처음으로 되돌리기 위해서 사용한다. rewind()는 fseek()를 이용해서 동일하게 구현할 수 있다.
1.3. 반환값
rewind()함수는 아무것도 되돌려주지 않는다. fgetpos(), fseek(), fsetpos()는 0을 ftell()는 현재 위치를 되돌려준다. 실패했을 경우에는 -1을 리턴한다.
1.4. 에러
stream이 위치를 정할 수 없는 스트림이다. STDOUT, STDIN이 대표적인 위치를 정할 수 없는 스트림이다.
whence인자가 SEEK_SET, SEEK_END, SEEK_CUR이 아닌 값을 사용했다.
시스템 호출이 인터럽트 되었다.
1.5. 예제
1.6. 참고문헌
lseek(2)
seek를 이용한 파일 위치 변경
Recent Posts
Archive Posts
Tags