[질문] linux c에서 file length 구하는 함수?

익명 사용자의 이미지

linux c에서 file length 길이 구하는 함수 있으면 가르쳐주세요..
window에서는 filelength() 함수가 있는데 linux에서는 않 되네요.

아래와 같이 하긴 했는데 따로 길이 구하는 함수가 있는지 궁금합니다.

long len = leeek(fh, 0L, SEEK_END) - 1;

익명 사용자의 이미지


stat이나 fstat 을 쓰심 될듯 싶네여.
파일 정보 중 size가 있으니까 성공적인 함수 호출 후
그 필드를 참조하세요.

익명 사용자의 이미지

#include
#include
#include
#include
#include
long filesize (char *name);
long filesize (char *name) {
long size;
int flag;
struct stat buf;
flag = stat (name,&buf);
if (flag == -1) return -1;
size = buf.st_size;
return (size);
}
int main (int argc, char *argv []) {
long size;
size = filesize ("./a.txt");
if (size != -1) printf ("Size = %ld\n", size);
else printf ("File Not Found\n");
}

익명 사용자의 이미지

fpos_t filelength;

FILE* fp = fopen("test", "r");

fseek(fp, 0, SEEK_END);

fgetpos(fp, &filelength);

int length = (int)filelength.__pos;