'ftell 함수와 rewind 함수'에 해당되는 글 1건

  1. 2013.02.15 ftell 함수와 rewind 함수

int cmp_file(FILE* fp1)
{
      printf("position: %d\n", ftell(fp1));       //파일을 열었을 때의 파일 위치 지시자의 위치.
       fseek(fp1, 0, SEEK_END);                   //파일 위치 지시자를 파일의 끝에 가도록한다.
       printf("file Size: %dbyte\n", ftell(fp1)); //ftell함수를 이용해 파일의 크기를 알아본다.
       puts("-------------------");
       printf("position: %d\n", ftell(fp1));       //현재 파일 위치 지시자의 위치를 출력한다.
       fseek(fp1, -5, SEEK_CUR);                 //현재의 위치에서 -5만큼 파일 위치 지시자를 움직인다.
       printf("position: %d\n", ftell(fp1));       //현재 파일 위치 지시자의 위치를 출력한다.
       rewind(fp1);                                      //파일 위치 지시자를 초기화 한다.

       printf("position: %d\n", ftell(fp1));       //현재 파일 위치 지시자의 위치를 출력한다.
}



#include <stdio.h>
long ftell(FILE* stream) 함수

: 파일 위치 지시자의 현재 위치를 알려주는 함수이다.
파일을 처음 열면 파일 포인터는 파일의 첫 위치를 가리킨다. 따라서 ftell() 함수는 0을 리턴하게 된다.

만약 1바이트를 읽으면 파일 포인터(파일 위치 지시자)는 1의 위치로 가게 된다.
파일 포인터는 다음 읽을 위치를 항상 가리키게 되어 있다. 파일에서 데이터를 읽으면, 읽 난 바로 뒤를 가리킨다.
그리고 fseek()함수를 사용하면 파일 포인터를 옮길 수 있다.

이렇게 파일 포인터가 어디를 가리키고 있으냐를 바이트 단위로 알려주는 함수가 ftell() 함수 이다.

ftell()함수가 주로 사용되는 경우는 파일의 크기를 얻고자 할 때이다.
파일을 열고 fseek() 함수로 파일 포인터를 파일의 끝으로 이동시킨 후, ftell() 함수를 호출하면 
파일의 크기를 "바이트 단위"로 얻을 수 있다.



#include <stdio.h>
void rewind(FILE* stream) 함수

:파일 위치 지시자를 맨 처음으로 설정해준다.(초기화)
fseek(stream, 0, SEEK_SET); 과 정확히 동일하다. 단, fseek함수와는 달리 rewind 함수는 오류 지정자를 초기화 한다.

따라서 스트림이 읽기 및 쓰기 형식으로 열려있을 경우, rewind 함수를 호출함으로써 읽기에서 쓰기 모드로,
쓰기에서 읽기 모드로 변경할 수 있다.

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

가변 인자 함수  (0) 2013.02.15
수학 관련 함수  (0) 2013.02.15
2차원 배열 동적할당.  (2) 2013.02.15
fprintf와 문자열 형식  (0) 2013.02.15
조건부 컴파일  (0) 2013.02.15
Posted by scii
: