Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어로 파일 크기 구하는 프로그램 작성 방법

C 언어에서는 fopen(), fseek(), ftell() 함수를 조합하면 파일의 크기를 손쉽게 구할 수 있습니다. 이 글에서는 파일 크기를 계산하는 C 프로그램의 알고리즘과 예제 코드, 실행 결과까지 단계별로 살펴보겠습니다.

알고리즘

시작
    함수 findfileSize()
    읽기 전용 모드("r")로 파일 포인터 fp를 연다.
    만약 fp가 NULL이라면
        "파일을 찾을 수 없습니다"를 출력하고 -1을 반환한다.
    그렇지 않으면 파일 크기를 계산한다.
        fseek()로 파일 포인터를 파일의 끝(SEEK_END)으로 이동시킨다.
        ftell()의 반환값으로 정수형 변수 result를 초기화한다.
    파일 포인터 fp를 닫는다.
    result를 반환한다.
종료

예제 코드

#include <stdio.h>

int findfileSize(char f_n[]) {
    FILE* fp = fopen(f_n, "r"); // 읽기 모드로 파일 열기
    if (fp == NULL) { // 파일 존재 여부 확인
        printf("File Not Found!\n");
        return -1;
    }
    fseek(fp, 0L, SEEK_END); // 파일 포인터를 파일 끝으로 이동
    int res = ftell(fp); // 현재 위치(=파일 끝)까지의 바이트 수 계산
    fclose(fp); // 파일 닫기
    return res;
}

int main() {
    char f_n[] = { "b.txt" }; // 크기를 구할 파일 이름 "b.txt"
    int result = findfileSize(f_n);
    if (result != -1)
        printf("Size of the file is %ld bytes \n", result); // 파일 크기 출력
    return 0;
}

실행 결과

Size of the file is 2649 bytes

주요 함수 설명

fseek()

fseek(fp, 0L, SEEK_END)는 파일 포인터를 파일의 맨 끝으로 이동시키는 함수입니다. 세 번째 인자인 SEEK_END는 기준 위치를 파일 끝으로 지정하며, 두 번째 인자인 오프셋이 0이므로 파일의 마지막 바이트 다음 위치에 포인터가 놓이게 됩니다.

ftell()

ftell()은 파일 포인터의 현재 위치가 파일 시작점으로부터 몇 바이트 떨어져 있는지 반환합니다. 파일 끝으로 이동한 상태에서 호출하면 그 값이 곧 전체 파일 크기(바이트 단위)가 됩니다.

주의 사항

매우 큰 파일을 다루는 경우 ftell()의 반환값을 저장하는 변수를 long 타입으로 선언하는 것이 안전합니다. 또한 파일을 열 때 항상 반환값이 NULL인지 검사하여, 파일이 존재하지 않거나 열기에 실패한 경우를 처리해야 프로그램이 비정상적으로 동작하는 것을 막을 수 있습니다.