zoukankan      html  css  js  c++  java
  • C语言获取文件大小相关操作

    C语言获取文件大小相关操作


    声明:引用请注明出处http://blog.csdn.net/lg1259156776/


    说明

    通常在希望从文件中把数据全都出来赋值给一个数组或者某一个指针,然后再进行相关的数据处理,比如解码等操作。而在进行赋值以前,数组或者指针都需要进行内存分配,通常对于数组可以直接以文件最大的字节数进行分配,或者指针用malloc也按照最大字节进行分配,但这样会造成内存浪费,对于追求完美的程序员来讲是不能容忍的。所以一种非常适合的方法是在读取文件具体数据之前,可以提前获得文件大小,然后利用malloc对指针进行内存分配,然后再进行数据读取,直接fread对应的数据即可。本文给出了一种最简单的获取文件大小的方法。

    程序代码

         FILE * fImage;
         int Length;
         unsigned char * ImageData;
         if((fImage=fopen("Bretagne2.j2k","rb"))!=NULL)//寻找文件的大小!
         {
            fseek(fImage,0,SEEK_END);
            Length=ftell(fImage);
            printf("data size = %ld
    ",Length);
            fseek(fImage,0,SEEK_SET);
            ImageData = (unsigned char *)malloc(Length);
            fread(ImageData,1,Length,fImage);
            if(!ImageData)
            {
                printf("malloc error! 
    ");
                return;
            }
            fclose(fImage);
        }
        else 
        {
            printf("Open Data error!
    ");
            return;
        }
    

    首先是打开文件,然后将文件指针调整到文件尾部,然后使用ftell获取文件指针的位置,ftell返回值就是用于得到文件位置指针当前位置相对于文件首的偏移字节数。这样就很简单的获取这个文件的大小了。同时直接使用malloc进行内存分配,然后直接读取即可,十分方便。


    2015-10-18调试记录总结 张朋艺

  • 相关阅读:
    Web API系列之三 基本功能实现
    Web API系列之二WebApi基础框架搭建
    C# (类型、对象、线程栈和托管堆)在运行时的相互关系
    C# 命名空间和程序集
    C# new关键字和对象类型转换(双括号、is操作符、as操作符)
    Vue.js系列之四计算属性和观察者
    Vue.js系列之三模板语法
    C# 对象哈希码
    Class与Style绑定
    Koa学习笔记
  • 原文地址:https://www.cnblogs.com/huty/p/8519006.html
Copyright © 2011-2022 走看看