C语言获取文件长度
一、使用标准库方法
#include <stdio.h> long get_file_size(const char * filename ){ long size = 0; FILE * fp = fopen(filename,"rb"); if( fp == NULL ) { printf("open file %s failed\r\n",filename); return 0; } // 移动文件指针到文件末尾 fseek(fp,0,SEEK_END); // 获取文件长度 size = ftell(fp); fclose(fp); fp = NULL; return size; }
二、使用Linux系统调用
在Linux操作系统下,可以使用stat函数来获取文件信息,其中st_size字段表示文件的长度。
#include <stdio.h> #include <sys/stat.h> long get_file_size(const char * filename ){ struct stat st; // 获取文件信息 if( stat(filename,&st) == -1){ printf("get file %s 's info failed\r\n",filename); return 0; } //S_ISLNK(st_mode):是否是一个连接 //S_ISREG是否是一个常规文件 //S_ISDIR是否是一个目录 //S_ISCHR是否是一个字符设备 //S_ISBLK是否是一个块设备 //S_ISFIFO是否是一个FIFO文件 //S_ISSOCK是否是一个SOCKET文件 // 检查文件类型 if( !S_ISREG(st.st_mode)){ printf("%s 不是一个常规文件\r\n",filename); return 0; } return st.st_size; }