方法一:

  获得文件大小需要用到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字节处。

  ftell()函数:

  原型: longftell(FILE *stream);

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

  #include <STDIO.H>

  #include <STDLIB.H>  //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 <STDIO.H>

  #include <SYS types.h>

  #include <SYS stat.h>

  #include <TIME.H>

  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语言中如何获得文件大小的更多相关文章

  1. JAVA语言中的修饰符

    JAVA语言中的修饰符 -----------------------------------------------01--------------------------------------- ...

  2. Java语言中的面向对象特性总结

    Java语言中的面向对象特性 (总结得不错) [课前思考]  1. 什么是对象?什么是类?什么是包?什么是接口?什么是内部类?  2. 面向对象编程的特性有哪三个?它们各自又有哪些特性?  3. 你知 ...

  3. python语言中的编码问题

    在编程的过程当中,常常会遇到莫名其妙的乱码问题.很多人选择出了问题直接在网上找答案,把别人的例子照搬过来,这是快速解决问题的一个好办法.然而,作为一个严谨求实的开发者,如果不从源头上彻底理解乱码产生的 ...

  4. 在C语言中利用PCRE实现正则表达式

    1. PCRE简介 2. 正则表达式定义 3. PCRE正则表达式的定义 4. PCRE的函数简介 5. 使用PCRE在C语言中实现正则表达式的解析 6. PCRE函数在C语言中的使用小例子 1. P ...

  5. C语言中函数声明实现的位置

    在学习C语言的时候我遇到了这么个事情,因为之前先学习的C#,在C#编译器中,函数的声明位置不会影响编译的结果,但是在C语言中却发生了错误 先看一段代码: #include <stdio.h> ...

  6. C语言中的栈和堆

    原文出处<http://blog.csdn.net/xiayufeng520/article/details/45956305#t0> 栈内存由编译器分配和释放,堆内存由程序分配和释放. ...

  7. 在易语言中调用MS SQL SERVER数据库存储过程方法总结

    Microsoft SQL SERVER 数据库存储过程,根据其输入输出数据,笼统的可以分为以下几种情况或其组合:无输入,有一个或多个输入参数,无输出,直接返回(return)一个值,通过output ...

  8. C语言中结构体赋值问题的讨论

    今天帮师姐调一个程序的BUG,师姐的程序中有个结构体直接赋值的语句,在我印象中结构体好像是不能直接赋值的,正如数组不能直接赋值那样,我怀疑这个地方有问题,但最后证明并不是这个问题.那么就总结一下C语言 ...

  9. Coursera-Getting and Cleaning Data-week4-R语言中的正则表达式以及文本处理

    博客总目录:http://www.cnblogs.com/weibaar/p/4507801.html Thursday, January 29, 2015 补上第四周笔记,以及本次课程总结. 第四周 ...

随机推荐

  1. qt-solutions提供了8个开源项目

    其实这是官方提供的源代码,至于为什么会另建项目,而没有整合到QT项目里去,我猜可能有2个原因: 1. 这几个项目本身不完善,并且也不是QT项目的核心,因此没有必要花精力去完善 2. 一定程度上可以维护 ...

  2. php5,Apache在windows 7环境搭建

    主要是参考以下文章: http://www.cnblogs.com/Yogurshine/archive/2013/05/24/3097343.html http://jingyan.baidu.co ...

  3. 【HDOJ】1011 Starship Troopers

    第一道树形DP.很容易理解. #include <cstdio> #include <cstring> #include <cstdlib> #define MAX ...

  4. 【转】Microsoft visio 2013 pro 图文激活破解教程

    原文网址:http://jingyan.baidu.com/article/db55b609ab0e1f4ba30a2ff0.html Microsoft visio 2013 pro 假如您使用Mi ...

  5. 素数与素性测试(Miller-Rabin测试)

    转载自Matrix大牛的博客 把代码翻译成C++ http://www.matrix67.com/blog/archives/234 题目链接: http://hihocoder.com/proble ...

  6. UVA 195 Anagram

    题意:求输入字符串的所有组合,按字典序输出! 解法:使用枚举(枚举前先找出最字符串的最小字典序)枚举时加上枚举生成条件! #include <iostream> #include < ...

  7. HER COFFEE夜场代金券【1折】_北京美食团购_360团购导航

    HER COFFEE夜场代金券[1折]_北京美食团购_360团购导航 HER COFFEE夜场代金券

  8. 联系我们_你我想法_【有男度】UNANDU 100%进口 全球设计师品牌精汇 男装_男装搭配_时尚男装_品牌男装_男装搭配技巧_男装网站

    联系我们_你我想法_[有男度]UNANDU 100%进口 全球设计师品牌精汇 男装_男装搭配_时尚男装_品牌男装_男装搭配技巧_男装网站 联系我们 2012-02-17   国内北京公司总部  邮编 ...

  9. 数据库版本管理工具Flyway(4.0.3)---工作机制(译文)

    How Flyway works The easiest scenario is when you point Flyway to an empty database. 最容易的方案是Flyway指向 ...

  10. Codeforces 385C Bear and Prime Numbers

    题目链接:Codeforces 385C Bear and Prime Numbers 这题告诉我仅仅有询问没有更新通常是不用线段树的.或者说还有比线段树更简单的方法. 用一个sum数组记录前n项和, ...