没有合适的资源?快使用搜索试试~ 我知道了~
首页C++文件读写操作C++文件读写操作
C++文件读写操作C++文件读写操作
需积分: 50 9 下载量 163 浏览量
更新于2023-06-30
收藏 117KB DOC 举报
C++文件读写操作C++文件读写操作 C++文件读写操作C++文件读写操作
资源详情
资源推荐
![](https://csdnimg.cn/release/download_crawler_static/3335308/bg1.jpg)
C&C++文件操作
1 C 文件操作
在 中,对文件的操作分为两种方式,即:
流式文件操作
I/O 文件操作
1.1 流式文件操作
这种方式的文件操作有一个重要的结构 , 在 中定义如下:
以下是引用片段:
!"#
$%&$&%&$
&
$&'$&"#
"()#(
$&*+"#,&&&"#
$&*+&
$!-!& &
.'&.$
/-"0
这个结构包含了文件操作的基本属性,对文件的操作都要通过这个结构
的指针来进行,此种文件操作常用的函数如下,下面是这些函数的功能使用说明:
1.1.1 fopen()
功能:打开流
的原型是:1& &!2&
!3, 实现三个功能:为使用而打开一个流,把一个文件和此流相
连接,给此流返回一个 + 指针。
![](https://csdnimg.cn/release/download_crawler_static/3335308/bg2.jpg)
参数 &! 指向要打开的文件名,! 表示打开状态的字符串,其
取值如下:
"r" 以只读方式打开文件
"w" 以只写方式打开文件
"a" 以追加方式打开文件
"r+" 以读/写方式打开文件,如无文件出错
"w+" 以读/写方式打开文件,如无文件生成新文件
一个文件可以以文本模式或二进制模式打开,这两种的区别是:在文本模
式中回车被当成一个字符454,而二进制模式认为它是两个字符 676,2676
如果在文件中读到 678),文本模式会认为这是文件结束符,也就是二进制模
型不会对文件进行处理,而文本方式会按一定的方式对数据作相应的转换。
系统默认的是以文本模式打开,可以修改全部变量*! 的值来修改这
个设置,例如*!9:*-;-就设置默认打开方式为文本模式而
*!9:*)+<则设置默认打开方式是二进制模式。
我们也可以在模式字符串中指定打开的模式,如="=表示以二进制模式打
开只读文件,=>?=或=>?=表示以文本模式打开读写文件。
此函数返回一个 指针,所以申明一个 指针后不用初始化,而是
用 13来返回一个指针并与一个特定的文件相连,如果成败,返回 '
例如: 以下是引用片段:
FILE*fp;
if(fp=fopen("123.456","wb"))
puts("打开文件成功");
else
puts("打开文件成败");
1.1.2 fclose() 关闭流
13的功能就是关闭用 13打开的文件,其原型是:
13如果成功,返回 62失败返回 :。
在程序结束时一定要记得关闭打开的文件,不然可能会造成数据丢失的情
况,我以前就经常犯这样的错误。
例:13
![](https://csdnimg.cn/release/download_crawler_static/3335308/bg3.jpg)
1.1.3 fputc() 写一个字符到流中
向流写一个字符,原型是 12&!3成功返回这个
字符2失败返回 :。
例:14;423
1.1.4 fgetc() 从流中读一个字符
从流中读一个字符,原型是 1&!3成功返回这个字符2
失败返回 :。
例:&89$13
1.1.5 fseek() 在流中定位到指定的字符
此函数一般用于二进制模式打开的文件中,功能是定位到流中指定的位置,
原型是 .1&!2$#2>3如果成功返回
6,参数 # 是移动的字符数,> 是移动的基准,取值是:
符号常量 值 基准位置
SEEK_SET 0 文件开头
SEEK_CUR 1 当前读写的位置
SEEK_END 2 文件尾部
例:.128@AB2C*'+3把读写位置从当前位置向后移动
8@AB 字节1 后缀表示长整数3
.1262@3把读写位置移动到文件尾
1.1.6 fputs() 写字符串到流
写一个字符串到流中,原型 1&2&!3
例:1=<=23
![](https://csdnimg.cn/release/download_crawler_static/3335308/bg4.jpg)
1.1.7 fgets() 从流中读一行或指定个字符
从流中读一行或指定个字符,原型是 &$1&22
&!3从流中读取 D8 个字符,除非读完一行,参数 是来接收字符串,
如果成功则返回 的指针,否则返回 '。
例:如果一个文件的当前位置的文本如下:
2E&
)FF
如果用
$182B2 83
则执行后 89==,读取了 BD89A 个字符,而如果用
$182@A2 83
则执行 9=2E&=,读取了一行1不包括行尾的4543。
1.1.8 fprintf() 按格式输出到流
按格式输入到流,其原型是 1&!2&
!&G2&$!2FH3其用法和 13相同,不过不是写到控制台,而
是写到流罢了。
例:12=I@I=2B2=E&&&=3
1.1.9 fscanf() 从流中按格式读取
从流中按格式读取,其原型是 &1&!2&
!&G2&2FH3其用法和 &13相同,不过不是从控制台读取,而
是从流读取罢了。
例:&12=II=2J72J3
1.1.10 feof() 到达文件尾时返回真值
检测是否已到文件尾,是返回真,否则返回 6,其原型是 1
&!3
![](https://csdnimg.cn/release/download_crawler_static/3335308/bg5.jpg)
例:11331=已到文件尾=3
1.1.11 ferror() 发生错误时返回其值
原型是 1&!3返回流最近的错误代码,可用
&13来清除它,&13的原型是 &1&!3
例:1=I=2133
1.1.12 rewind() 复位文件定位器到文件开始处
把当前的读写位置回到文件开始,原型是 >1&!3
其实本函数相当于 .1262C*-3
例:>13
1.1.13 remove() 删除文件
删除文件,原型是 !1& &!3参数就是要删
除的文件名,成功返回 6。
例:!1=K55=3
1.1.14 fread() 从流中读指定个数的字符
从流中读指定个数的字符,原型是 (*&12(*(2
(*2&!3参数 是保存读取的数据,的指针可用任何
类型的指针来替换,如 &、等等来替换( 是每块的字节数 是读
取的块数,如果成功,返回实际读取的块数1不是字节数3,本函数一般用于二
进制模式打开的文件中。
例:
以下是引用片段:
&7GB@A6H
891=K55!=2==3
&172@6628@2 83共读取 @668@9@B66 个字节
剩余25页未读,继续阅读
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/3a3807b16515430e8680df5c98626610_zhanglidn013.jpg!1)
zhanglidn013
- 粉丝: 40
- 资源: 53
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
会员权益专享
最新资源
- VMP技术解析:Handle块优化与壳模板初始化
- C++ Primer 第四版更新:现代编程风格与标准库
- 计算机系统基础实验:缓冲区溢出攻击(Lab3)
- 中国结算网上业务平台:证券登记操作详解与常见问题
- FPGA驱动的五子棋博弈系统:加速与创新娱乐体验
- 多旋翼飞行器定点位置控制器设计实验
- 基于流量预测与潮汐效应的动态载频优化策略
- SQL练习:查询分析与高级操作
- 海底数据中心散热优化:从MATLAB到动态模拟
- 移动应用作业:MyDiaryBook - Google Material Design 日记APP
- Linux提权技术详解:从内核漏洞到Sudo配置错误
- 93分钟快速入门 LaTeX:从入门到实践
- 5G测试新挑战与罗德与施瓦茨解决方案
- EAS系统性能优化与故障诊断指南
- Java并发编程:JUC核心概念解析与应用
- 数据结构实验报告:基于不同存储结构的线性表和树实现
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)