C로 파일 크기를 알아내고 싶습니다. 도와주세요

파일크기를 알아내는 방법을 알고 싶습니다. 파일 내용 전체를 문자열로 저장하기 전에 딱 파일 크기만큼만 malloc 한 후 읽고 싶어서요.

지금 malloc(MAXSIZE*sizeof(char))같이 쓰고 있는데 너무 비효율적이에요

1답변

  • 좋아요

    0

    싫어요
    채택취소하기

    파일 크기를 알아내는 방법(2가지)

    1. ftell으로 찾기 :

    ftell은 파일의 시작 위치와 현재 파인 포인터 위치 사이의 거리를 구해 줍니다

    fseek(f, 0, SEEK_END); // 파일 포인터를 파일의 끝으로 이동
    size = ftell(f); // 파일 시작부터 맨 끝까지의 거리를 return
    fseek(f, 0, SEEK_SET); // 파일 포인터를 파일의 처음으로 이동
    

    2. stat으로 찾기 :

    stat는 파일에 대한 정보를 구조체에 담아 return해 줍니다.

    #include <sys/stat.h>
    struct stat st;
    stat(filename, &st);
    size = st.st_size;
    

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.