C 언어 ftell() 함수란?
C 언어에서 ftell() 함수는 지정된 스트림(stream)의 파일 시작 지점을 기준으로 현재 파일 위치를 반환하는 함수입니다. 이 함수는 파일 포인터를 파일 끝으로 이동시킨 후 파일의 전체 크기를 구할 때 특히 유용하게 사용됩니다.
ftell()은 현재 위치를 long 타입으로 반환하기 때문에, 32,767바이트(32KB)를 초과하는 대용량 파일도 문제없이 처리할 수 있다는 장점이 있습니다.
ftell() 함수 문법
long int ftell(FILE *stream)
매개변수
stream – 스트림을 식별하는 FILE 객체를 가리키는 포인터입니다.
ftell()로 파일 크기 구하기
ftell()의 대표적인 활용 예는 fseek()과 함께 사용하여 파일의 전체 크기를 계산하는 것입니다. 동작 순서는 다음과 같습니다.
fopen()으로 파일을 읽기 모드로 엽니다.fseek(f, 0, SEEK_END)로 파일 포인터를 파일 끝으로 이동시킵니다.ftell(f)가 파일 끝 위치, 즉 파일 전체 크기를 바이트 단위로 반환합니다.fclose()로 파일을 닫고 결과를 출력합니다.
예제 코드
다음과 같은 내용을 담고 있는 one.txt 파일이 있다고 가정해 보겠습니다.
This is demo text! This is demo text! This is demo text!
이제 ftell()을 활용한 전체 예제 코드를 살펴보겠습니다.
#include <stdio.h>
#include <conio.h>
void main() {
FILE *f;
int len;
f = fopen("one.txt", "r");
if (f == NULL) {
perror("Error opening file");
return(-1);
}
fseek(f, 0, SEEK_END); // 파일 포인터를 파일 끝으로 이동
len = ftell(f); // 현재 위치 = 파일 크기
fclose(f);
printf("Size of file: %d bytes", len);
getch();
}실행 결과
Size of file: 78 bytes
정리
ftell() 함수는 파일 내 현재 위치를 long 타입으로 반환하며, fseek()와 조합하면 별도의 라이브러리 없이 간단히 파일 크기를 측정할 수 있습니다. 파일 입출력을 다룰 때 자주 사용되는 필수 함수이므로, fopen → fseek → ftell → fclose의 흐름을 함께 기억해 두면 좋습니다.