언어 자료구조 알고리즘/C11 표준 라이브러리 함수

fgetpos 함수 [C언어 표준 라이브러리 함수 가이드]

언제나휴일 2016. 1. 3. 15:14
반응형

fgetpos


헤더 파일

[언어 자료구조 알고리즘/C11 표준 라이브러리 함수] - STDIO.H


int fgetpos ( FILE * fp, fpos_t * pos ); 파일 스트림의 파일 position 구하는 함수
 
입력 매개 변수 리스트
fp 파일 스트림
pos 파일 position을 읽어올 메모리 주소
반환 값
성공 시 0, 실패 시 0이 아닌 수
 
fpos_t 형식은 64비트 정수로 매우 큰 (263-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


반응형