C++如何操作文件

本文介绍了C语言中处理文件输入输出的关键结构体FILE和BITMAPINFOHEADER,以及fopen、fread、fseek和fclose等常用文件操作函数的用法和模式选择。

数据类型

1、FILE   

FILE *fp;   

定义了一个指向FILE类型的指针变量fpFILE是C语言中用于处理文件输入和输出的结构体类型。该指针可以用于打开、读取、写入和关闭文件等操作。

2、BITMAPINFOHEADER

BITMAPINFOHEADER pInfo

 定义了一个名为pInfo的变量,类型为BITMAPINFOHEADERBITMAPINFOHEADER是Windows编程中用于描述位图文件头信息的结构体类型。它包含了位图的尺寸、颜色深度等信息。

常用函数

1、fopen 

fp = fopen(filename.c_str(), "rb");

调用fopen函数,传入文件路径和打开模式作为参数,返回一个指向打开的文件的指针赋值给变量fp,使得fp指向已经打开的文件。

第一个参数。这里将存储了要打开的文件的路径和名称的filename转换为C字符串来使用。

第二个参数。用于指定打开文件的模式。"rb"表示以二进制只读模式打开文件。

fopen函数可以使用不同的模式来打开文件,具体的模式包括:

  • "r":只读模式,打开一个已存在的文本文件。
  • "w":写入模式,创建一个新的文本文件,如果文件已存在,则会清空文件内容。
  • "a":追加模式,写入数据到文件末尾,如果文件不存在,则创建新文件。
  • "rb":只读模式,以二进制格式打开一个已存在的文件。
  • "wb":写入模式,创建一个新的二进制文件,如果文件已存在,则会清空文件内容。
  • "ab":追加模式,以二进制格式写入数据到文件末尾,如果文件不存在,则创建新文件。

除了上述模式外,还可以与以下标志组合使用:

  • "+":在原有模式的基础上添加读取或写入功能。
  • "t":文本模式,默认模式,可省略。
  • "b":二进制模式。

例如,"rb+"表示以二进制模式打开文件,并允许读取和写入数据。

根据实际需求,选择适合的模式来打开文件。

2、fread

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)

从给定流 stream 读取数据到 ptr 所指向的数组中。

  • ptr -- 这是指向带有最小尺寸 size*nmemb 字节的内存块的指针。
  • size -- 这是要读取的每个元素的大小,以字节为单位。
  • nmemb -- 这是元素的个数,每个元素的大小为 size 字节。
  • stream -- 这是指向 FILE 对象的指针,该 FILE 对象指定了一个输入流。

成功读取的元素总数会以 size_t 对象返回,size_t 对象是一个整型数据类型。如果总数与 nmemb 参数不同,则可能发生了一个错误或者到达了文件末尾。 

3、fseek

设置流 stream 的文件位置为给定的偏移 offset,参数 offset 意味着从给定的 whence 位置查找的字节数。

int fseek(FILE *stream, long int offset, int whence)
  • stream -- 这是指向 FILE 对象的指针,该 FILE 对象标识了流。
  • offset -- 这是相对 whence 的偏移量,以字节为单位。
  • whence -- 这是表示开始添加偏移 offset 的位置。它一般指定为下列常量之一

常量

描述

SEEK_SET

文件的开头

SEEK_CUR

文件指针的当前位置

SEEK_END

文件的末尾

4、fclose

关闭流 stream。刷新所有的缓冲区。

int fclose(FILE *stream)
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xuxuxucq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值