- 浏览: 60949 次
- 性别:
- 来自: 武汉
将文本文件读入内存。需要用到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;
一、三个函数简介
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++内存管理
2011-09-19 10:45 7661 内存管理 伟大的Bill G ... -
调试程序
2011-09-14 16:21 690******************************* ... -
有用的网址
2011-08-04 12:44 595http://searchdns.netcraft.com/ -
vim高级应用
2011-08-04 10:29 980命令模式: “s”为表 ... -
c/c++ 调试
2011-06-08 15:31 807readelf -s a.out 可以查看符号表,就能找到对应 ... -
网站列表
2011-02-25 09:48 658http://www.rosoo.net/ NO ... -
高性能服务器注意事项
2011-01-18 13:09 808对于这里所说的服务器,更精确的定义应该是每秒处理大量离散消息或 ... -
在 Linux 平台中调试 C/C++ 内存泄漏方法
2010-10-20 15:56 888由于 C 和 C++ 程序中完全由程序员自主申请和释放内存 ... -
用socket编写C/S结构程序的流程图
2010-10-08 17:07 24351.面向连接的套接字的系统调用时序图 无连接协议的套接字调用 ... -
STL中的容器的遍历的使用方法
2010-08-12 17:39 2047STL中的容器按存储方式分为两类,一类是按以数组形式存储的容器 ... -
50 c/c++ 源码网站
2010-08-03 15:47 7571、http://snippets.dzone.com/tag ... -
值得注意的函数
2010-08-03 13:48 525函数 严重性 解决 ... -
调用系统命令
2010-08-02 12:52 605int get_system_info(char* cmdst ... -
结构体对齐
2010-07-30 13:59 12901,比如: struct{ short a1; sh ... -
LINUX c++线程池框架
2010-07-15 11:25 1381本文给出了一个通用的线程池框架,该框架将与线程执行相关的任务进 ... -
一个简单的linux线程池
2010-07-12 18:10 948线程池:简单地说,线程池 就是预先创建好一批线程,方便、快速 ... -
文件字符串处理
2010-06-30 09:12 671#include <iostream> #incl ... -
不能用类成员函数作为线程函数
2010-06-29 17:12 824不能用类成员函数作为线程函数 -
c++ 字符串替换
2010-06-24 10:43 948#include <string> #incl ...
相关推荐
用C语言实现将一个文件读入内存中,编出来发现还是挺简单的
程序由一个主函数和两个子函数构成;子函数为getData()和check()。getData用来读取数据,将数据存入内存,将内存地址返回给主函数。check负责检查数据传递是否正确。
为我院设计一个简单的教师信息管理程序。对我院教师进行管理,包括插入、删除、...程序执行时先将文件读入内存。 (2)对教师信息中的"姓名"按字典顺序进行排序。 (3)对排序后的教师进行增、删、查询、修改等操作。
程序执行时先将文件读入内存。 (2)对职工对象中的"姓名"按字典顺序进行排序。 (3)对排序后的职工对象进行增、删、查询、修改、排序等操作。 4.选做内容 将职工对象按散列法存储,并设计解决冲突的方法。在此...
简单的职工管理系统: 1、问题描述 对单位的职工进行管理,包括插入、...程序执行时先将文件读入内存。 (2)对职工对象中的"姓名"按字典顺序进行排序。 (3)对排序后的职工对象进行增、删、查询、修改、排序等操作。
成功读取10G文件数据至内存,不是一次性读取。
1.1问题描述 对单位的职工进行管理,包括插入、删除、查找、排序...程序执行时先将文件读入内存。 (2)对职工对象中的"姓名"按字典顺序进行排序。 (3)对排序后的职工对象进行增加、删除、查询、修改、排序等操作。
(1)由键盘输入职工对象,以文件方式保存,程序执行时先将文件读入内存。 (2) 对职工对象中的“姓名"按字典顺序进行排序。 (3)对排序后的职工对象进行增、删、查询、修改、排序等操作。 测试数据:要求使用1、...
DDE_data_transform 将两个表格使用pandas进行合并 DDE_TTL 提取ddl文件中一些标签中潜藏的数据,将其转换成excel表格的形式 DDE数据表 一些数据样例 提取数据表 使用DDE_TTL 将ddl转换成的excel数据
程序执行时先将文件读入内存。 (2)系统内输入居民姓名,则显示以下信息(三项分行显示): a 需缴纳医保种类:根据职业分类,学龄前儿童、学生、待就业等职业显示“您缴纳医保类型为:居民医疗保险”;其余显示...
将Xml格式文件读入内存,完成使用LINQ查询学号及姓名的功能。学号及姓名是由用户输入的。查询的结果显示在ListBox中,结果可存入另一个Excel文件中,文件名可由用户指定。使用Regex检查Email和学号的合法性(写入Xml...
简单的职工管理系统主要实现以下功能: (1) 新增一名职工:将新增...程序执行时先将文件读入内存。 (2) 对职工对象中的"姓名"按字典顺序进行排序。 (3) 对排序后的职工对象进行增、删、查询、修改、排序等操作。
简单的职工管理系统,内含源代码和文档 简单的职工管理系统主要...程序执行时先将文件读入内存。 (2) 对职工对象中的"姓名"按字典顺序进行排序。 (3) 对排序后的职工对象进行增、删、查询、修改、排序等操作。
内存文件系统:建立基于内存的文件系统。 首先分配一定容量的内存,建立虚拟磁盘; 在该磁盘上建立相应的文件系统;...提供虚拟磁盘转储功能,可将信息存入磁盘,还可从磁盘读入内存; 4设计环境: Windows xp vc++6.0
该软件将文件读入内存,并分析其结构和存在的问题,最后对该文件进行修复,恢复其中的内容。用户可以预览修复好的文件内容及其包含的图片。如果对修复结果不满意,就可以退回到第二步去选择“Use Salvage Content ...
2.利用已经建好的哈夫曼树(如不在内存,则从文件htmTree中读入),对文件ToBeTran中的正文进行编码,然后将结果存入文件CodeFile中,并输出结果,将文件CodeFile以紧凑格式先是在终端上,每行50个代码。同时将此...
内存文件系统:建立基于内存的文件系统。 首先在内存中建立虚拟磁盘; 在该磁盘上建立相应的文件系统; 为该文件系统设计相应的数据结构来管理目录、...提供虚拟磁盘转储功能,可将信息存入磁盘,还可从磁盘读入内存;
作为一个新手学习C语言读写数据,我整合了一下自己查找的一些资料,用C语言实现将一个文件读入内存中,里面有运行工具,和一个word文档代码。
函数完成该动作 注意:任何有关从服务器下载的文件操作,必然需要先在服务端将文件读入内存当中 现在文件已经在内存当中了,这是需要从内存当中读取文件,通过fread()函数完成该动作 需要注意的是,如果文件较大,...
将Xml格式文件读入内存,完成使用LINQ查询学号及姓名的功能。学号及姓名是由用户输入的。查询的结果显示在ListBox中,结果可存入另一个Excel文件中,文件名可由用户指定。使用Regex检查Email和学号的合法性(写入Xml...