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\n",Length);
fseek(fImage,0,SEEK_SET);
ImageData = (unsigned char *)malloc(Length);
fread(ImageData,1,Length,fImage);
if(!ImageData)
{
printf("malloc error! \n");
return;
}
fclose(fImage);
}
else
{
printf("Open Data error!\n");
return;
}

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


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

C语言获取文件大小相关操作的更多相关文章

  1. cmd 下登陆ftp及相关操作

    cmd 下登陆ftp及相关操作 2011-08-09 20:34:28|  分类: 小技巧|字号 订阅 一.举例 假设FTP地址为“ 61.129.83.39”(大家试验的时候不要以这个FTP去试,应 ...

  2. PHP-文件、目录相关操作

    PHP-文件.目录相关操作 一  目录操作(Directory 函数允许获得关于目录及其内容的信息) 相关函数: 函数 描述 chdir() 改变当前的目录. chroot() 改变根目录. clos ...

  3. 从零自学Hadoop(20):HBase数据模型相关操作上

    阅读目录 序 介绍 命名空间 表 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 ...

  4. 从零自学Hadoop(21):HBase数据模型相关操作下

    阅读目录 序 变量 数据模型操作 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 ...

  5. 理解CSV文件以及ABAP中的相关操作

    在很多ABAP开发中,我们使用CSV文件,有时候,关于CSV文件本身的一些问题使人迷惑.它仅仅是一种被逗号分割的文本文档吗? 让我们先来看看接下来可能要处理的几个相关组件的词汇的语义. Separat ...

  6. Liunx下的有关于tomcat的相关操作 && Liunx 常用指令

    先记录以下liunx下的有关于tomcat的相关操作 查看tomcat进程: ps-ef|grep java (回车) 停止tomcat进程: kill -9 PID (进程号如77447) (回车) ...

  7. pip的相关操作

    >Python中的pip是什么?能够做些什么? pip是Python中的一个进行包管理的东西,能够下载包.安装包.卸载包......一些列操作 >怎么查看pip的相关信息 在控制台输入: ...

  8. python操作mysql数据库的相关操作实例

    python操作mysql数据库的相关操作实例 # -*- coding: utf-8 -*- #python operate mysql database import MySQLdb #数据库名称 ...

  9. php对二维数组进行相关操作(排序、转换、去空白等)

    php对二维数组进行相关操作(排序.转换.去空白等) 投稿:lijiao 字体:[增加 减小] 类型:转载 时间:2015-11-04   这篇文章主要介绍了php对二维数组进行相关操作,包括php对 ...

随机推荐

  1. 树状数组例题-数星星,简单题easy,校门外的树2,清点人数

    [例1]数星星 天空中有一些星星,这些星星都在不同的位置,每个星星都有个坐标,如果一个星星的左下方(包括正左和正下)有k颗星星,就说这颗星星是k级的. 比如,上图中,星星5是3级的(1,2,4在其左下 ...

  2. spark操作hive方式(scala)

    第一种方式: def operatorHive: Unit = { Class.forName("org.apache.hive.jdbc.HiveDriver") val url ...

  3. Promise.then方法的执行顺序例题分析

    1. 当Promise对象作为resolve的参数时 const p = Promise.resolve(); const p1 = Promise.resolve(p); //就是p const p ...

  4. GridView用数据源控件和用DataTable作为数据源的不同

    1.使用数据源控件可以自动做排序分页,不需要多余代码,可是由于自动绑定太多操作,反而觉得很不灵活 前台: <asp:GridViewID="gv_test"DataSourc ...

  5. 搭建自己的博客(二十一):通过django表单实现登录注册

    1.变化的部分

  6. 激活 phpstorm2019.1 win10

    首先添加以下内容到c:\windows\system32\drivers\etc\hosts 文件 0.0.0.0 account.jetbrains.com 0.0.0.0 www.jetbrain ...

  7. vue中使用定时器时this指向

    箭头函数中的this指向是固定不变(定义函数时的指向),在vue中指向vue; 普通函数中的this指向是变化的(使用函数时的指向),谁调用的指向谁.   箭头函数: let timerOne = s ...

  8. vue点击父组件里面的列表动态传值到子组件

    <template> <div> 爸爸 <div style="background-color:yellow;margin-top:10px" v- ...

  9. meshing-轴

    原视频下载地址:https://yunpan.cn/cqrJRm32dMmAL  访问密码 9dd9

  10. 浅谈JSONP 的本质工作原理

    json 是一种数据格式jsonp 是一种数据调用的方式. 你可以简单的理解为 带callback的json就是jsonp 话说我们访问一个页面的时候 需要像另一个网站获取部分信息, 这就是所谓的跨域 ...