- 浏览: 63477 次
- 性别:
- 来自: 武汉
将文本文件读入内存。需要用到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 8141 内存管理 伟大的Bill G ... -
调试程序
2011-09-14 16:21 741******************************* ... -
有用的网址
2011-08-04 12:44 633http://searchdns.netcraft.com/ -
vim高级应用
2011-08-04 10:29 1011命令模式: “s”为表 ... -
c/c++ 调试
2011-06-08 15:31 843readelf -s a.out 可以查看符号表,就能找到对应 ... -
网站列表
2011-02-25 09:48 701http://www.rosoo.net/ NO ... -
高性能服务器注意事项
2011-01-18 13:09 844对于这里所说的服务器,更精确的定义应该是每秒处理大量离散消息或 ... -
在 Linux 平台中调试 C/C++ 内存泄漏方法
2010-10-20 15:56 925由于 C 和 C++ 程序中完全由程序员自主申请和释放内存 ... -
用socket编写C/S结构程序的流程图
2010-10-08 17:07 24691.面向连接的套接字的系统调用时序图 无连接协议的套接字调用 ... -
STL中的容器的遍历的使用方法
2010-08-12 17:39 2091STL中的容器按存储方式分为两类,一类是按以数组形式存储的容器 ... -
50 c/c++ 源码网站
2010-08-03 15:47 7981、http://snippets.dzone.com/tag ... -
值得注意的函数
2010-08-03 13:48 560函数 严重性 解决 ... -
调用系统命令
2010-08-02 12:52 650int get_system_info(char* cmdst ... -
结构体对齐
2010-07-30 13:59 13281,比如: struct{ short a1; sh ... -
LINUX c++线程池框架
2010-07-15 11:25 1423本文给出了一个通用的线程池框架,该框架将与线程执行相关的任务进 ... -
一个简单的linux线程池
2010-07-12 18:10 984线程池:简单地说,线程池 就是预先创建好一批线程,方便、快速 ... -
文件字符串处理
2010-06-30 09:12 708#include <iostream> #incl ... -
不能用类成员函数作为线程函数
2010-06-29 17:12 870不能用类成员函数作为线程函数 -
c++ 字符串替换
2010-06-24 10:43 998#include <string> #incl ...
相关推荐
用C语言实现将一个文件读入内存中,编出来发现还是挺简单的
此外,如果文件过大,一次性读入内存可能会导致内存不足,此时可以考虑分块读取。 总的来说,这个程序展示了如何在C语言中通过`malloc()`分配内存,`fopen()`、`fread()`读取文件数据,以及如何进行内存管理。这些...
为我院设计一个简单的教师信息管理程序。对我院教师进行管理,包括插入、删除、...程序执行时先将文件读入内存。 (2)对教师信息中的"姓名"按字典顺序进行排序。 (3)对排序后的教师进行增、删、查询、修改等操作。
2. VB中的图片处理:在VB中,可以使用PictureBox控件来显示图片,但加载图片时需要将文件读入内存并转换为VB可识别的数据类型,如Bitmap对象。 3. 内存加载图片:内存加载是指将图片数据直接读取到内存中,而不是先...
标题中的"将文本读入内存代码.docx"和描述中的信息暗示了这是一个关于在C语言中读取文本文件并将其内容存储到内存中的程序。这个程序定义了一个名为`ContentOfFile`的函数,它接受一个参数:文件名。下面是对这个...
- 将文件读入内存并转换为字节数组。 - 创建一个数据库表,包含文件ID、文件名、文件类型等元数据字段,以及用于存储文件内容的BLOB字段。 - 插入记录,将字节数组存储在BLOB字段。 - 当需要显示或下载时,从...
简单的职工管理系统: 1、问题描述 对单位的职工进行管理,包括插入、...程序执行时先将文件读入内存。 (2)对职工对象中的"姓名"按字典顺序进行排序。 (3)对排序后的职工对象进行增、删、查询、修改、排序等操作。
(1)由键盘输入职工对象,以文件方式保存,程序执行时先将文件读入内存。 (2) 对职工对象中的“姓名"按字典顺序进行排序。 (3)对排序后的职工对象进行增、删、查询、修改、排序等操作。 测试数据:要求使用1、...
1.1问题描述 对单位的职工进行管理,包括插入、删除、查找、排序...程序执行时先将文件读入内存。 (2)对职工对象中的"姓名"按字典顺序进行排序。 (3)对排序后的职工对象进行增加、删除、查询、修改、排序等操作。
1. **文件读取**:在发送文件之前,我们需要将文件读入内存。对于图片,可以使用QImage或QPixmap类加载图片数据;对于PDF文件,可以使用QFile类读取文件内容。读取文件时,通常选择二进制模式,以避免因文本编码问题...
(1)由键盘输入职工对象,以文件方式保存,程序执行时先将文件读入内存。 (2) 对职工对象中的“姓名"按字典顺序进行排序。 (3)对排序后的职工对象进行增、删、查询、修改、排序等操作。 测试数据:要求使用1、...
在二进制文件加密中,通常会先将文件读入内存,然后用选定的加密算法处理数据。加密后的数据会被写回磁盘,形成加密的二进制文件。解密时,需要正确地读取加密文件,并使用相应的密钥进行解密,才能恢复原始内容。 ...
本篇文章将深入探讨如何在易语言中防止文件内存溢出,并基于"读入子程序"这一核心功能进行详细讲解。 首先,理解“文件内存溢出”是什么至关重要。当程序尝试读取或处理过大文件时,如果一次性将整个文件加载到内存...
成功读取10G文件数据至内存,不是一次性读取。
3. **文件发送**:客户端将文件读入内存,然后通过CAsyncSocket的Send()函数分块发送到服务器。为了确保数据完整,通常会使用阻塞模式发送,直到所有数据都发送完毕。 4. **文件接收**:服务器端在接收到连接后,...
2. 将文件读入内存,按预设块大小依次写入新的文件中,生成多个部分文件。 3. 每个部分文件可能会带有元数据,如总文件大小、部分编号、校验和等,以便于合并时验证和排序。 文件合并则是在接收端将这些部分文件...
2.利用已经建好的哈夫曼树(如不在内存,则从文件htmTree中读入),对文件ToBeTran中的正文进行编码,然后将结果存入文件CodeFile中,并输出结果,将文件CodeFile以紧凑格式先是在终端上,每行50个代码。同时将此...
2. **映射文件到内存**:使用`CreateFileMappingA`创建一个文件映射对象,然后用`MapViewOfFile`将EXE文件映射到进程的虚拟内存空间中,这样可以方便地访问文件内容。 3. **解析PE头**:通过读取映射到内存的文件...
DDE_data_transform 将两个表格使用pandas进行合并 DDE_TTL 提取ddl文件中一些标签中潜藏的数据,将其转换成excel表格的形式 DDE数据表 一些数据样例 提取数据表 使用DDE_TTL 将ddl转换成的excel数据
4. **文件分块**:在发送文件之前,需要将文件读入内存并分割成多个数据块。 5. **发送和接收数据**:使用CSocket的Send和Receive方法,客户端将数据块逐个发送给服务器端。发送方需要处理发送失败的情况,如网络...