모두의 코드
C 언어 레퍼런스 - fseek 함수

작성일 : 2010-04-24 이 글은 48402 번 읽혔습니다.

아직 C 언어와 친숙하지 않다면, 씹어먹는 C 언어 강좌를 보는 것이 어떻까요?

fseek

#include <stdio.h>  // C++ 에서는 <cstdio>

int fseek(FILE* stream, long int offset, int origin);

스트림 위치 지정자 (position indicator) 의 위치를 조정한다.

origin 인자로 전달된 위치로 부터 offset 인자로 전달된 만큼 더한 위치로 위치 지정자를 설정한다. 이 함수를 호출한 이후에는 파일 끝 지정자 (End of File indicator) 가 초기화 되고, 이전에 만일 ungetc함수를 호출하였다면 이로 인한 효과는 모두 사라지게 된다.

한가지 명심해야 할 점은, 만일 텍스트 파일에 fseek 함수를 사용할 때, offset 값으로 0 이나 같은 파일에 ftell 함수를 사용했을 때 반환된 값 이외의 것들을 사용하는 것은 의도하지 않은 결과를 초래할 수 있으니 조심해야 한다.

fseek 함수는 또한 스트림이 읽기 및 쓰기 형식으로 열려있을 때, 이 함수를 호출함을 통해 읽기 - 쓰기 모드를 전환할 수 있다. (자세한 내용은 fopen함수를 참조하기 바란다)

인자

stream

작업을 수행할 스트림의 FILE 객체를 가리키는 포인터

offset

orgin 으로 부터 얼마나 떨어진 곳에 설정할 지에 대한 값

origin

오프셋이 더해지는 위치로, <stdio.h> 에 정의된 다음과 같은 매크로 상수들을 이용한다.

상수

설명

SEEK_SET

파일의 시작

SEEK_CUR

현재 파일 포인터의 위치

SEEK_END

파일의 끝

리턴값

만일 성공하였으면 0 을 리턴한다. 그렇지 않다면 0 이 아닌 값을 리턴한다.

실행 예제

/*

example.txt 에 "This is an apple" 을 쓴 뒤에 다시 fseek 함수를 이용하여 n 부터
sam 으로 바꾼다. 즉, example.txt 에는 "This is an sample" 이 들어가게 된다. 이
예제는 http://www.cplusplus.com/reference/clibrary/cstdio/fseek/ 에서
가져왔습니다.

 */
#include <stdio.h>

int main() {
  FILE* pFile;
  pFile = fopen("example.txt", "w");
  fputs("This is an apple.", pFile);
  fseek(pFile, 9, SEEK_SET);
  fputs(" sam", pFile);
  fclose(pFile);
  return 0;
}

실행 결과

myfile.txt 에는

참고 자료

  • ftell : 스트림의 현재 위치를 구한다.

  • fsetpos: 스트림의 위치 지정자를 설정한다.

  • rewind : 스트림의 위치 지정자를 맨 처음으로 설정한다.

댓글이 2 개 있습니다!
프로필 사진 없음
강좌에 관련 없이 궁금한 내용은 여기를 사용해주세요

    댓글을 불러오는 중입니다..