C语言获取文件长度
文章目录
一、使用标准库方法
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字段表示文件的长度。
c
#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;
}