본문 바로가기
C/C Library

fgetpos

by memora 2024. 8. 15.

Index로 돌아가기   

【기  능】 파일 포인터의 위치를 취득한다.
 
 【소  속】 stdio.h 
   #include <stdio.h>
 
 【서  식】  
   int fgetpos(FILE *fp, fpos_t *pos);
 
 【설  명】  
   fp가 가리키는 파일 포인터의 현재 위치를 취득해서 pos에 넣어준다.
   파일에서 읽기 쓰기를 하면 파일 포인트가 읽고 쓴 만큼 변동된다. 그 변동된 위치를  fgetpos()로 취득할 수 있다. 읽고 쓰는 위치를 지정하고 싶을 때는 fsetpos()로 설정 할 수 있다.

 【인  수】  
   FILE *fp : file pointer. fopen함수로 오픈한 파일정보를 가지고 있는 핸들러 
   fpos_t *pos : 파일 포인터 저장소. fpos_t타입은 stdio.h에 설정되어 있다.

 【리턴 값】
  취득 성공시 : 0
  취득 실패시 : 0이외의 수(에러의 종류는 errno로 확인할 수 있다. perror()참조)
 
 【사용 예】
 #include <stdio.h>
 #include <stdlib.h>

 int main(void)
 {
     FILE *fp;
     char strBuff[] = "Write some string!!\n";
     fpos_t fpos, tmppos;
     int iRetn;

    /* 쓰기 모드로 파일을 오픈한다 */
    if( (fp = fopen("test_data.txt", "w") ) == NULL ) {
        printf("파일 오픈 에러\n");
        exit(EXIT_FAILURE);
    }
    else{
        printf("파일 오픈 성공\n");
    }

    /* 파일 포인터의 현재 위치를 취득한다 */
    iRetn = fgetpos(fp, &fpos);
    printf("파일 포인터의 초기 위치 = %ld\n", fpos);

    /* 오픈한 파일에 한 줄의 문자열을 출력한다 */
    iRetn = fputs(strBuff, fp);
    if(iRetn == EOF){
        printf("파일 출력 에러\n");
    }
    else{
        printf("출력 문자열 = %s", strBuff);
        printf("출력 문자열 사이즈 = %d\n", sizeof(strBuff));
    }

    printf("\n");

    /* 파일 포인터의 현재 위치를 취득한다 */
    iRetn = fgetpos(fp, &fpos);
    printf("파일에 쓴 후, 파일 포인터의 현재 위치 = %ld\n", fpos);

    /* 오픈한 파일을 닫는다(close) */
    iRetn = fclose(fp);
    if(iRetn != 0){
        printf("파일 클로즈 에러\n");
    }
    else{
        printf("파일 클로즈 성공\n");
    }

    return 0;
}

  【결   과】
파일 오픈 성공
파일 포인터의 초기 위치 = 0
출력 문자열 = Write some string!!
출력 문자열 사이즈 = 21

파일에 쓴 후, 파일 포인터의 현재 위치 = 21
파일 클로즈 성공


Index로 돌아가기

반응형

'C > C Library' 카테고리의 다른 글

freopen  (0) 2024.08.30
fopen  (0) 2024.08.21
fputs  (0) 2024.08.14
fgets  (0) 2024.08.13
fputc  (0) 2024.08.07