fgetpos 함수

int fgetpos ( FILE * fp, fpos_t * pos ); 파일 스트림의 파일 position을 구하는 함수

입력 매개 변수 리스트

fp 파일 스트림

pos 파일 position을 읽어올 메모리 주소

반환 값

성공 시 0, 실패 시 0이 아닌 수

fpos_t 형식은 64비트 정수로 매우 큰 (2의 63승 -1 바이트) 파일에서의 파일 position을 확인할 수 있습니다. 다음의 사용 예는 4G파일을 만든 후에 파일 position을 확인하는 코드입니다. 테스트 후에 data.txt 파일을 지우세요.

사용 예

//C언어 표준 라이브러리 함수 가이드
//int fgetpos ( FILE * fp, fpos_t * pos ); 파일 스트림의 파일 position을 구하는 함수
//커다란 파일을 기록 한 후에 파일 스트림의 position을 확인

/***************************************************************************/
/* 주의: 이 프로그램을 실행하면 4G 파일이 만들어 집니다.             */
/*         테스트 후에 반드시 제거하세요.                                       */
/***************************************************************************/

#include <stdio.h>

//테스트를 위해 400kbytes 크기의 구조체 정의
typedef struct {
    char buf[400000];
}BigData;

int main (void)
{
    FILE * fp;
    fpos_t offset;
    int i;
    BigData bigdata={'a'};

    fopen_s (&fp,"data.txt","wb");//쓰기 모드로 파일 열기
    if (fp==NULL) 
    {
        perror ("error fopen");
        return 0;
    }

    //출력 파일 스트림에 400kbytes 데이터를 10000번 출력
    for(i=0;i<10000;i++)
    {
        fwrite(&bigdata,sizeof(BigData),1,fp);
    }    
    
    fgetpos(fp,&offset);//파일 스트림의 파일 position 확인
    printf("%lld\n",offset);    //파일 positon 출력
    
    fclose (fp);//출력 파일 스트림 닫기
    return 0;
}

출력

4000000000