方法一:

  获得文件大小需要用到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. Android特效 五种Toast详解

    Toast是Android中用来显示显示信息的一种机制,和Dialog不一样的是,Toast是没有焦点的,而且Toast显示的时间有限,过一定的时间就会自动消失.而且Toast主要用于向用户显示提示消 ...

  2. 【转】随身HiFi 安卓OTG功能在音频上的妙用

    原文网址:http://article.pchome.net/content-1745467.html 随身HiFi 安卓OTG功能在音频上的妙用 [PChome电脑之家音频频道原创]说起Androi ...

  3. java,大数据批量插入、更新

    public void exec(Connection conn){ try { conn.setAutoCommit(false); Long beginTime = System.currentT ...

  4. MySQL 遇到的问题:在服务里找不到自己的 MySQL,以及在命令行窗口中运行服务出现的问题。

    1.用数据库的时候在服务里找不到自己的 MySQL ,于是就想用命令行窗口去运行. ①.在开始里,键入 cmd ,打开命令行窗口. ②.输入:mysql -u root -p 回车,这时会提示请输入密 ...

  5. CSS常用选择器

    关于CSS常用选择器: 1.ID选择器 关于ID选择器具有唯一性,在文档流中,ID是唯一的,在低版本的浏览器中,允许出现不适唯一ID的情况,而在高版本的浏览器中,出现ID不唯一的情况浏览器会出现的报错 ...

  6. 关于kendo ui的使用改变颜色方式

    1.概述: 在网上kendo ui教程中示例在演示的时候引用的css样式为kendo.common.min.css与kendo.default.min.css这两个外部样式,大家有没有发现,这两个样式 ...

  7. POJ 3254 Corn Fields (状态压缩DP)

    题意:在由方格组成的矩形里面种草,相邻方格不能都种草,有障碍的地方不能种草,问有多少种种草方案(不种也算一种方案). 分析:方格边长范围只有12,用状态压缩dp好解决. 预处理:每一行的障碍用一个状态 ...

  8. Comprehensive learning path – Data Science in Python深入学习路径-使用python数据中学习

    http://blog.csdn.net/pipisorry/article/details/44245575 关于怎么学习python,并将python用于数据科学.数据分析.机器学习中的一篇非常好 ...

  9. Java基础知识强化68:基本类型包装类之Character概述和Character常见方法

    1. Character概述: public final class Character extends Object implements Serializable,Comparable<Ch ...

  10. Shell防DDOS攻击原理

    #!/bin/sh #date:2015-12-13 #filename:fang-DOS.sh  #version:v1.0 while true do     #awk '{print $1}' ...