C & LINUX

C / LINUX ftell(3) fseek(3) rewind(3)

Ocean_ 2022. 5. 2. 13:46
#include<stdio.h>
#include<stdlib.h>

int main(void){
    char *fname = "ssu_test.txt";
    FILE *fp;
    long position;
    int character;

    if ((fp=fopen(fname,"r"))==NULL){
        fprintf(stderr, "fopen error for %s\n",fname);
        exit(1);
    }

    printf("Input number>>");
    scanf("%ld",&position);
    fseek(fp,position-1,SEEK_SET);
    character=getc(fp);
    printf("%ldth character -> %c\n",position,character);
    exit(0);
}

함수 기능

ftell

파일 스트림의 현재 오프셋 위치가 파일의 시작부터 몇 바이트만큼 떨어져 있는지 알려주는 함수

fseek

파일 입출력시 파일스트림의 현재오프셋 위치를 재조정하여 지정된 위치로 이동시키는 함수

rewind

파일 스트림의 현재 오프셋 위치를 맨처음 위치로 설정하고 파일의 맨 처음으로 이동

함수 원형

#include <stdio.h>
long ftell(FILE *fp);
int fseek(FILE *fp, long offset, int whence);
void rewind(FILE *fp);

함수 파라메터

fp

파일 포인터

offset

어느정도 이동시킬지 offset

whence

lseek의 값과 동일

 

함수 예제

ftell

#include<stdio.h>
#include<stdlib.h>

int main(void){
    char *fname = "ssu_test.txt";
    FILE *fp;
    long fsize;

    if((fp=fopen(fname,"r"))==NULL){
        fprintf(stderr,"fopen error for %s\n",fname);
        exit(1);
    }

    fseek(fp,0,SEEK_END);
    fsize=ftell(fp);
    printf("The size of<%s> is %ld bytes\n",fname,fsize);
    exit(0);
}

fseek

 

함수 결과

ftell

fseek

 

리눅스시스템 프로그래밍 - 홍지만 저

교재 내에 있는 예제를 바탕으로 작성한 글 입니다.