zoukankan      html  css  js  c++  java
  • C语言中如何获得文件大小

     方法一:

      获得文件大小需要用到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("文件打开失败。 ");

      exit(0);

      }

      fseek(fp,0,2);   //指针:移动到文件尾部

      n = ftell(fp);   //返回指针偏离文件头的位置(即文件中字符个数)

      printf("%ld ",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 ", buf.st_size );

      printf( "所在磁盘     : %c: ", buf.st_dev + 'A' );

      printf( "创建时间     : %s", ctime( &buf.st_atime ) );

      return 0;

      }

  • 相关阅读:
    neutron-server Connection pool is full, discarding connection 连接池过满
    C#中值类型与引用类型
    抽象类与接口的比较
    XML解析与文件存取
    Json序列化与反序列化
    关于Stream系列实战
    CTS,CLS,CLR
    冒泡排序——算法
    Js 调用 webservice
    使用WebService的优点
  • 原文地址:https://www.cnblogs.com/honkly/p/3724660.html
Copyright © 2011-2022 走看看