`
unsoundboy
  • 浏览: 60949 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

将文件读入内存

    博客分类:
  • c++
 
阅读更多
将文本文件读入内存。需要用到fseek、fread和ftell函数。

一、三个函数简介
fseek:移动文件流的读写位置

函数原型:int fseek(FILE *stream, long offset, int whence);

参数whence为下列其中一种:
SEEK_SET从距文件开头offset位移量为新的读写位置。
SEEK_CUR 以目前的读写位置往后增加offset个位移量。
SEEK_END将读写位置指向文件尾后再增加offset个位移量。
当whence值为SEEK_CUR 或SEEK_END时,参数offset允许负值的出现。

下列是较特别的使用方式:
1) 欲将读写位置移动到文件开头时:fseek(FILE *stream,0,SEEK_SET);
2) 欲将读写位置移动到文件尾时:fseek(FILE *stream,0,0SEEK_END);

tips:fseek()不像lseek()会返回读写位置,因此必须使用ftell()来取得目前读写的位置。

fread:用来从文件流中读取数据。参数stream为已打开的文件指针,参数ptr 指向欲存放读取进来的数据空间,读取的字符数以参数size*nmemb来决定。fread()会返回实际读取到的nmemb数目,如果此值比参数nmemb 来得小,则代表可能读到了文件尾或有错误发生,这时必须用feof()或ferror()来决定发生什么情况。

函数原型:size_t fread(void * ptr,size_t size,size_t nmemb,FILE * stream);

ftell:取得文件流的读取位置
函数原型:long ftell(FILE * stream);
ftell()用来取得文件流目前的读写位置。参数stream为已打开的文件指针。


二、读取文件内容到内存的源码段

FILE* pfin = fopen("test.txt", "r");
if(!pfin){
    cout << "File open Error!" <<endl;
    exit(1);
}

fseek(pfin, 0, SEEK_END);            //将读写位置定位到文件尾
int size = ftell(pfin);              //得到文本文件的字节数
char *pbuf = new char[size+1];
fseek(pfin, 0, SEEK_SET);            //将读写位置定位到文件头
fread(pbuf, sizeof(char), size, pfin); //将整个文件读入到pbuf所指内存中
fclose(pfin);

cout << pbuf << endl;
分享到:
评论

相关推荐

    用C语言实现将一个文件读入内存中

    用C语言实现将一个文件读入内存中,编出来发现还是挺简单的

    C语言将文件数据读入内存

    程序由一个主函数和两个子函数构成;子函数为getData()和check()。getData用来读取数据,将数据存入内存,将内存地址返回给主函数。check负责检查数据传递是否正确。

    C++数据结构 教师信息管理系统.zip

    为我院设计一个简单的教师信息管理程序。对我院教师进行管理,包括插入、删除、...程序执行时先将文件读入内存。 (2)对教师信息中的"姓名"按字典顺序进行排序。 (3)对排序后的教师进行增、删、查询、修改等操作。

    职工工资管理C++源代码

    程序执行时先将文件读入内存。 (2)对职工对象中的"姓名"按字典顺序进行排序。 (3)对排序后的职工对象进行增、删、查询、修改、排序等操作。 4.选做内容  将职工对象按散列法存储,并设计解决冲突的方法。在此...

    基于python语言和sqlite数据库的职工信息管理系统

    简单的职工管理系统: 1、问题描述 对单位的职工进行管理,包括插入、...程序执行时先将文件读入内存。 (2)对职工对象中的"姓名"按字典顺序进行排序。 (3)对排序后的职工对象进行增、删、查询、修改、排序等操作。

    C# 读取大数据文件至内存

    成功读取10G文件数据至内存,不是一次性读取。

    数据结构课程设计 职工管理系统 c语言代码

    1.1问题描述  对单位的职工进行管理,包括插入、删除、查找、排序...程序执行时先将文件读入内存。 (2)对职工对象中的"姓名"按字典顺序进行排序。 (3)对排序后的职工对象进行增加、删除、查询、修改、排序等操作。

    C语言期末:职工管理系统

    (1)由键盘输入职工对象,以文件方式保存,程序执行时先将文件读入内存。 (2) 对职工对象中的“姓名"按字典顺序进行排序。 (3)对排序后的职工对象进行增、删、查询、修改、排序等操作。 测试数据:要求使用1、...

    pyhon 运用正则表达式 将ddl文件读入内存中并转换成excel文件

    DDE_data_transform 将两个表格使用pandas进行合并 DDE_TTL 提取ddl文件中一些标签中潜藏的数据,将其转换成excel表格的形式 DDE数据表 一些数据样例 提取数据表 使用DDE_TTL 将ddl转换成的excel数据

    基于python的居民医保管理查找系统

    程序执行时先将文件读入内存。 (2)系统内输入居民姓名,则显示以下信息(三项分行显示): a 需缴纳医保种类:根据职业分类,学龄前儿童、学生、待就业等职业显示“您缴纳医保类型为:居民医疗保险”;其余显示...

    C#和office COM读入Excel文件并处理

    将Xml格式文件读入内存,完成使用LINQ查询学号及姓名的功能。学号及姓名是由用户输入的。查询的结果显示在ListBox中,结果可存入另一个Excel文件中,文件名可由用户指定。使用Regex检查Email和学号的合法性(写入Xml...

    简单的职工管理系统(数据结构课程设计)

    简单的职工管理系统主要实现以下功能: (1) 新增一名职工:将新增...程序执行时先将文件读入内存。 (2) 对职工对象中的"姓名"按字典顺序进行排序。 (3) 对排序后的职工对象进行增、删、查询、修改、排序等操作。

    简单的职工管理系统(数据结构)

    简单的职工管理系统,内含源代码和文档 简单的职工管理系统主要...程序执行时先将文件读入内存。 (2) 对职工对象中的"姓名"按字典顺序进行排序。 (3) 对排序后的职工对象进行增、删、查询、修改、排序等操作。

    建立基于内存的文件系统

    内存文件系统:建立基于内存的文件系统。 首先分配一定容量的内存,建立虚拟磁盘; 在该磁盘上建立相应的文件系统;...提供虚拟磁盘转储功能,可将信息存入磁盘,还可从磁盘读入内存; 4设计环境: Windows xp vc++6.0

    Word文档修复器

    该软件将文件读入内存,并分析其结构和存在的问题,最后对该文件进行修复,恢复其中的内容。用户可以预览修复好的文件内容及其包含的图片。如果对修复结果不满意,就可以退回到第二步去选择“Use Salvage Content ...

    哈夫曼树应用 从终端读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树并将它存于文件hfmTree中.将已在内存中的哈夫曼树以直观的方式(比如树)显示在终端上;

    2.利用已经建好的哈夫曼树(如不在内存,则从文件htmTree中读入),对文件ToBeTran中的正文进行编码,然后将结果存入文件CodeFile中,并输出结果,将文件CodeFile以紧凑格式先是在终端上,每行50个代码。同时将此...

    内存文件系统

    内存文件系统:建立基于内存的文件系统。 首先在内存中建立虚拟磁盘; 在该磁盘上建立相应的文件系统; 为该文件系统设计相应的数据结构来管理目录、...提供虚拟磁盘转储功能,可将信息存入磁盘,还可从磁盘读入内存;

    C语言读取文件数据,写入内存

    作为一个新手学习C语言读写数据,我整合了一下自己查找的一些资料,用C语言实现将一个文件读入内存中,里面有运行工具,和一个word文档代码。

    Php中文件下载功能实现超详细流程分析

    函数完成该动作 注意:任何有关从服务器下载的文件操作,必然需要先在服务端将文件读入内存当中 现在文件已经在内存当中了,这是需要从内存当中读取文件,通过fread()函数完成该动作 需要注意的是,如果文件较大,...

    C#和office COM功能读入Excel文件(wpf程序)

    将Xml格式文件读入内存,完成使用LINQ查询学号及姓名的功能。学号及姓名是由用户输入的。查询的结果显示在ListBox中,结果可存入另一个Excel文件中,文件名可由用户指定。使用Regex检查Email和学号的合法性(写入Xml...

Global site tag (gtag.js) - Google Analytics