programing 2014. 5. 31. 14:26

ftell, fseek 함수

ftell 함수 

#include <stdio.h> 

long int ftell (FILE * stream);

/* 

파일 전체의 크기를 읽어온다. pFile 을 파일 끝으로 선택한 뒤, ftell 함수를 통해서 파일 처음 부터 pFile 까지, 즉 파일 처음 부터 끝 까지의 바이트 수를 계산한다. 
이 예제는 
http://www.cplusplus.com/reference/clibrary/cstdio/ftell/
에서 가져왔습니다. 

 */
#include <stdio.h>
int main ()
{
    FILE * pFile;
    long size;

    pFile = fopen ("myfile.txt","rb");

    if (pFile==NULL) 
        perror ("Error opening file");
    else
    {
        fseek (pFile, 0, SEEK_END);
        size=ftell (pFile);
        fclose (pFile);
        printf ("Size of myfile.txt: %ld bytes.\n",size);
    }
    return 0;
}

스트림의 위치 지정자의 형재 위치를 구한다.

위치 포인터가 가진 값이 리턴된다. ->  현재 파일의 끝에 위치포인터가 있을것이므로, 파일 처음부터 끝까지의 바이트수가 리턴된다.


파일 전체의 크기를 읽어온다. pFile 을 파일 끝으로 선택한 뒤, ftell 함수를 통해서 파일 처음 부터 pFile 까지, 즉 파일 처음 부터 끝 까지의 바이트 수를 계산한다. 


fseek 함수

#include<stdio.h>

int fseek(FILE * stream, long int offset, int origin);

/*

example.txt 에 "This is an apple" 을 쓴 뒤에 다시 fseek 함수를 이용하여 n 부터 sam 으로 바꾼다. 즉, example.txt 에는 "This is an sample" 이 들어가게 된다. 
이 예제는 http://www.cplusplus.com/reference/clibrary/cstdio/fseek/
에서 가져왔습니다. 

 */
#include <stdio.h>

int main ()
{
    FILE * pFile;
    pFile = fopen ( "example.txt" , "w" );
    fputs ( "This is an apple." , pFile );
    fseek ( pFile , 9 , SEEK_SET );
    fputs ( " sam" , pFile );
    fclose ( pFile );
    return 0;
}

스트림 위치 지정자의 위치를 조정한다.

origin 인자로 전달된 위치로부터 offset인자로 전달된 만큼 더한 위치로 위치지정자를 이동시킨다. 이 함수를 호출한 이후에는 파일 끝 지정자가 초기화된다.

origin 인자에는 다음과 같은 상수들이 들어간다.

SEEK_SET : 파일의 시작

SEEK_CUR : 현재 파일 포인터의 위치

SEEK_END : 파일의 끝

성공시엔 0을 리턴, 실패시엔 0이 아닌값을 리턴한다.


'programing' 카테고리의 다른 글

10-2 C++  (0) 2014.10.02
09/18 c++ 강의  (0) 2014.09.18
c++ 강의 9/11  (0) 2014.09.11
파일 위치 지시자  (0) 2014.06.07
calloc realloc 조사  (0) 2014.06.06