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

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

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

fsetpos

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

int fsetpos(FILE* stream, const fpos_t* pos);

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

스트림의 위치 지정자를 새로운 위치로 변경한다. 위 함수에서 인자로 전달되는 posfpos_t 객체를 가리키는 포인터로 반드시 이전의 fgetpos함수의 호출을 통해 값을 가지고 있어야 한다.

파일 끝 지정자는 이 함수의 호출 뒤에 초기화 되며, 만일 이전에 ungetc함수를 호출하였더라면 이 함수의 호출로 인한 모든 영향도 사라지게 된다.

또한, 스트림의 읽기 및 쓰기 형식으로 열려있을 경우, 이 함수를 호출함을 통해서 읽기 - 쓰기 모드를 변경할 수 있다. (자세한 내용은 fopen함수를 참조)

인자

stream

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

position

fpos_t 객체를 가리키는 포인터로, 반드시 이전의 fgetpos함수를 통해서 값을 지니고 있어야 한다.

리턴값

만일 성공적으로 수행하였다면 0 을 리턴한다. 그렇지 않다면 0 이 아닌 값을 리턴하고, 전역 변수인 errno 를 양수로 설정한다. 이 errno 에 설정된 값은 perror함수를 통해서 무슨 오류인지 확인할 수 있다.

실행 예제

/*
먼저 position 에 myfile.txt 의 맨 처음 부분을 넣은 후 myfile.txt 에 "That is a
sample" 을 쓴다. 그 다음에 fsetpos 함수를 호출함으로써 fputs 로 인해 변경되었던
위치 지정자가 다시 파일 맨 앞으로 옮겨진다. 그 후 "This" 를 다시 출력하면 결국
"This is a sample" 이 된다.이
예제는http://www.cplusplus.com/reference/clibrary/cstdio/fsetpos/에서
가져왔습니다.*/
#include <stdio.h>
int main() {
  FILE* pFile;
  fpos_t position;
  pFile = fopen("myfile.txt", "w");
  fgetpos(pFile, &position);
  fputs("That is a sample", pFile);
  fsetpos(pFile, &position);
  fputs("This", pFile);
  fclose(pFile);
  return 0;
}

실행 결과

myfile.txt 의 모습

참고 자료

  • fgetpos : 스트림의 현재 위치 지정자 값을 가져온다.

  • fseek : 스트림 위치 지정자를 다시 조정한다.

  • rewind : 스트림 위치 지정자를 맨 처음으로 되돌린다.

첫 댓글을 달아주세요!
프로필 사진 없음
강좌에 관련 없이 궁금한 내용은 여기를 사용해주세요

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