`
unsoundboy
  • 浏览: 63234 次
  • 性别: 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语言将文件数据读入内存

    此外,如果文件过大,一次性读入内存可能会导致内存不足,此时可以考虑分块读取。 总的来说,这个程序展示了如何在C语言中通过`malloc()`分配内存,`fopen()`、`fread()`读取文件数据,以及如何进行内存管理。这些...

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

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

    内存加载图片的软件源码

    2. VB中的图片处理:在VB中,可以使用PictureBox控件来显示图片,但加载图片时需要将文件读入内存并转换为VB可识别的数据类型,如Bitmap对象。 3. 内存加载图片:内存加载是指将图片数据直接读取到内存中,而不是先...

    将文本读入内存代码.docx

    标题中的"将文本读入内存代码.docx"和描述中的信息暗示了这是一个关于在C语言中读取文本文件并将其内容存储到内存中的程序。这个程序定义了一个名为`ContentOfFile`的函数,它接受一个参数:文件名。下面是对这个...

    文件保存数据库,可以下载

    - 将文件读入内存并转换为字节数组。 - 创建一个数据库表,包含文件ID、文件名、文件类型等元数据字段,以及用于存储文件内容的BLOB字段。 - 插入记录,将字节数组存储在BLOB字段。 - 当需要显示或下载时,从...

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

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

    C语言期末:职工管理系统(旧版)

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

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

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

    qt5串口简单实现图片、pdf文件的传输

    1. **文件读取**:在发送文件之前,我们需要将文件读入内存。对于图片,可以使用QImage或QPixmap类加载图片数据;对于PDF文件,可以使用QFile类读取文件内容。读取文件时,通常选择二进制模式,以避免因文本编码问题...

    C语言期末/课程设计:职工管理系统(vs2022)

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

    二进制文件加密

    在二进制文件加密中,通常会先将文件读入内存,然后用选定的加密算法处理数据。加密后的数据会被写回磁盘,形成加密的二进制文件。解密时,需要正确地读取加密文件,并使用相应的密钥进行解密,才能恢复原始内容。 ...

    易语言防止文件内存溢出

    本篇文章将深入探讨如何在易语言中防止文件内存溢出,并基于"读入子程序"这一核心功能进行详细讲解。 首先,理解“文件内存溢出”是什么至关重要。当程序尝试读取或处理过大文件时,如果一次性将整个文件加载到内存...

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

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

    局域网内文件的点对点传输 mfc实现

    3. **文件发送**:客户端将文件读入内存,然后通过CAsyncSocket的Send()函数分块发送到服务器。为了确保数据完整,通常会使用阻塞模式发送,直到所有数据都发送完毕。 4. **文件接收**:服务器端在接收到连接后,...

    文件拆分与合并,方便网络传输

    2. 将文件读入内存,按预设块大小依次写入新的文件中,生成多个部分文件。 3. 每个部分文件可能会带有元数据,如总文件大小、部分编号、校验和等,以便于合并时验证和排序。 文件合并则是在接收端将这些部分文件...

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

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

    动态加载EXE文件到内存执行1

    2. **映射文件到内存**:使用`CreateFileMappingA`创建一个文件映射对象,然后用`MapViewOfFile`将EXE文件映射到进程的虚拟内存空间中,这样可以方便地访问文件内容。 3. **解析PE头**:通过读取映射到内存的文件...

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

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

    基于CSocket点对点文件传输

    4. **文件分块**:在发送文件之前,需要将文件读入内存并分割成多个数据块。 5. **发送和接收数据**:使用CSocket的Send和Receive方法,客户端将数据块逐个发送给服务器端。发送方需要处理发送失败的情况,如网络...

Global site tag (gtag.js) - Google Analytics