设为首页 加入收藏

TOP

C语言中如何获得文件大小
2015-01-22 21:37:16 来源: 作者: 【 】 浏览:94
Tags:言中 如何 获得 文件 大小

作者 : 卿笃军


方法一:

获得文件大小需要用到2个函数:fseek() , ftell()

fseek()函数:

原型:intfseek(FILE *stream, long offset, int fromwhere);

参数:

stream: 第一个参数stream为文件指针
offset : 第二个参数offset为偏移量,正数表示正向偏移,负数表示负向偏移
fromwhere: 第三个参数origin设定从文件的哪里开始偏移,可能取值为:SEEK_CUR、 SEEK_END 或 SEEK_SET

SEEK_SET: 文件开头
SEEK_CUR: 当前位置
SEEK_END: 文件结尾
其中SEEK_SET,SEEK_CUR和SEEK_END依次为0,1和2.
简言之:
fseek(fp,100L,0);把文件内部指针移动到离文件开头100字节处;
fseek(fp,100L,1);把文件内部指针移动到离文件当前位置100字节处;
fseek(fp,-100L,2);把文件内部指针退回到离文件结尾100字节处。

参考文章:百度百科,fseek(),http://baike.baidu.com/view/656696.htm


ftell()函数:

原型: longftell(FILE *stream);

功能:返回当前文件位置,也就是说返回FILE指针当前位置。(也就是偏离文件首字符个数)

参考文章:百度百科,ftell(),http://baike.baidu.com/view/656699.htm

#include 
  
   
#include 
   
     //exit(0); int main() { FILE *fp =NULL; long n = 0; if ((fp = fopen("Q.txt","r")) == NULL) { printf("文件打开失败.\n"); exit(0); } fseek(fp,0,2); //指针:移动到文件尾部 n = ftell(fp); //返回指针偏离文件头的位置(即文件中字符个数) printf("%ld\n",n); return 0; }
   
  

方法二:

这里使用到 struct _stat结构体

st_atime : 上次访问该文件的时间

st_ctime : 文件创建时间

st_dev : 文件所在磁盘

st_mtime :最后一次修改文件时间

st_size : 文件大小

//...... 所有参数请参见MSDN

#include 
  
   
#include 
   
     #include 
    
      #include 
     
       int main() { struct _stat buf; //注意创建一个结构体 int result; result = _stat( "Q.txt", &buf ); printf( "文件大小 : %ld\n", buf.st_size ); printf( "所在磁盘 : %c:\n", buf.st_dev + 'A' ); printf( "创建时间 : %s", ctime( &buf.st_atime ) ); return 0; }
     
    
   
  

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C语言结构体点滴 下一篇C语言之typedef详解

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: