ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • C/C++ fseek(3), fseeko(3)
    C,C++ & Linux 2020. 5. 22. 11:23
    728x90

    함수 기능

    파일 오프셋 포인터를 이동시키는 함수입니다.

    파일을 읽거나 쓸 때 오프셋 포인터 위치에 작업이 일어납니다. 쉽게 생각해서 커서라고 

     

    fseeko() 함수는 offset 을 off_t 타입으로 표현합니다. 이는 long 보다 큰 타입으로, long 형으로 오프셋을 표현할 수 없는 매우 큰 파일에 대해 사용합니다.

    함수 원형

    #include <stdio.h>
    
    int fseek(FILE *fp, long offset, int whence);
    int fseeko(FILE *fp, off_t offset, int whence);

     

    매개변수

    fp

    대상 파일 포인터

     

    offset

    이동시킬 파일 오프셋

    양수, 0, 음수 모두 가능합니다.

     

    whence

    기준점

    SEEK_SET : 파일의 맨 처음

    SEEK_CUR : 현재 파일 오프셋

    SEEK_END : 파일의 맨 끝

    반환값

    성공 시 0 리턴

    에러 시 0이 아닌 정수 리턴

    예제

    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    
    
    int main(int argc, char *argv[]) {
        char *fname = "ssu_test.txt";
        FILE *fp;
        long position;
        int character;
    
        if ((fp = fopen(fname, "r")) == NULL) {
            fprintf(stderr, "fopen error\n");
            exit(1);
        }
    
        printf("Input number >> ");
        scanf("%ld", &position);
        
        if (fseek(fp, position - 1, SEEK_SET)) {
            fprintf(stderr, "fseek error\n");
            exit(1);
        }
    
        character = getc(fp);
        printf("%ld번째 글자는 %c 입니다.\n", position, character);
        exit(0);
    }
    

     

    결과

     

     

     

     

     

     

     

     

     

     

    리눅스시스템프로그래밍 저자 : 홍지만
    https://book.naver.com/bookdb/book_detail.nhn?bid=14623672

    책에 기술된 예제 프로그램입니다. 책 내부에는 훨씬 더 많은 자료가 있습니다. (개인적으로 좋았습니다.)

    'C,C++ & Linux' 카테고리의 다른 글

    C/C++ rewind(3)  (0) 2020.05.22
    C/C++ ftell(3), ftello(3)  (0) 2020.05.22
    C/C++ fread(3) fwrite(3)  (1) 2020.05.22
    C/C++ puts(3), fputs(3)  (0) 2020.05.22
    C/C++ gets(3), fgets(3)  (0) 2020.05.22

    댓글

Designed by Tistory.