fgetpos() — 파일 위치 가져오기

형식

#include <stdio.h>
int fgetpos(FILE *stream, fpos_t *pos);

언어 레벨

ANSI

스레드세이프

설명

fgetpos() 함수는 stream과 연관된 파일 포인터의 현재 위치를 pos가 가리키는 오브젝트에 저장합니다. pos가 가리키는 값을 fsetpos() 호출에서 나중에 사용하여 stream을 재배치할 수 있습니다.

리턴값

fgetpos() 함수는 성공하면 0을 리턴합니다. 오류 시 0이 아닌 값을 리턴하고 errno를 0이 아닌 값으로 설정합니다.

errno 값을 다음으로 설정할 수 있습니다.
의미
EBADF
파일 포인터 또는 설명자가 유효하지 않습니다.
EBADSEEK
찾기 조작의 잘못된 오프셋입니다.
ENODEV
잘못된 장치에서 조작을 시도했습니다.
ENOTOPEN
파일이 열려 있지 않습니다.
ERECIO
레코드 I/O를 위해 파일이 열려 있습니다.
ESTDERR
stderr을 열 수 없습니다.
ESTDIN
stdin을 열 수 없습니다.
ESTDOUT
stdout을 열 수 없습니다.
EIOERROR
회복 불가능한 I/O 오류가 발생했습니다.
EIORECERR
회복 가능한 I/O 오류가 발생했습니다.

type=record로 열린 파일에는 fgetpos() 함수가 지원되지 않습니다.

이 예는 읽기 위해 myfile 파일을 열고 현재 파일 포인터 위치를 pos 변수에 저장합니다.
#include <stdio.h>
 
FILE *stream;
 
int main(void)
{
   int retcode;
   fpos_t pos;
 
   stream = fopen("mylib/myfile", "rb");
 
   /* The value returned by fgetpos can be used by fsetpos */
   /* to set the file pointer if 'retcode' is 0            */
 
   if ((retcode = fgetpos(stream, &pos) == 0)
      printf("Current position of file pointer found\n");
   fclose(stream);
}