标准文件IO详解---读和写流
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了标准文件IO详解---读和写流相关的知识,希望对你有一定的参考价值。
C库函数中提供了三种不同类型的读写函数,这三种不同类型的读写方式如下:
- 一个字符一个字符的进行读写
- 以换行符为界一行一行的进行读写
- 一块一块的进行读写
======================================================
以字符为单位的读写函数: fgetc函数 和 fputc 函数
函数原型:
![技术分享](https://image.cha138.com/20210825/b23285ee61914292ab7974734a29d410.jpg)
![技术分享](C:\\Users\\Administrator.ZX-201607021417\\AppData\\Local\\YNote\\data\\qqCB8E4837B89F52255A132D320D34A33C\\220e4e1250a04f3482f47e8d9226746e\\clipboard.png)
函数参数:
- stream:要操作的文件流指针
返回值:
- 调用成功时返回读取到的字符
- 调用失败时返回 EOF(-1)
- 读取到文件末尾时返回 EOF(-1)
注意:当读取到文件末尾或者读取出错的时候,fgetc函数都会返回 EOF。为了解决这个问题,C库提供了 feof 和 ferror 两个函数,其中 feof 函数用来了检测文件是否到达文件末尾,ferror 函数用来检测读文件是否出错。
函数原型:
![技术分享](https://image.cha138.com/20210825/9b31bedd122743638afee0306f5f28fa.jpg)
![技术分享](C:\\Users\\Administrator.ZX-201607021417\\AppData\\Local\\YNote\\data\\qqCB8E4837B89F52255A132D320D34A33C\\48f813193336460a8a2ed2f42fbf8776\\clipboard.png)
函数参数:
- c:要写入的字符
- stream:要操作的文件流指针
返回值:
- 调用成功时返回 写入的字符
- 调用失败时返回 EOF(-1)
=====================================================
以行为单位读写的函数:fgets 函数和 fputs 函数
函数原型:
![技术分享](https://image.cha138.com/20210825/dd80295740c14395b4210659f39ad845.jpg)
![技术分享](C:\\Users\\Administrator.ZX-201607021417\\AppData\\Local\\YNote\\data\\qqCB8E4837B89F52255A132D320D34A33C\\7c8c15d7101c4db2ad2eb2e4c1171e77\\clipboard.png)
函数参数:
- s:保存读取出的内容的首地址
- size:读取出的字符数
- stream:要读取的文件流指针
返回值:
- 调用成功时返回 参数 s
- 调用失败时返回 NULL
- 读取到文件末尾时返回 NULL
关于 fgets 函数有以下几点需要注意:
- 第一点和 fgetc 函数相同,就是需要利用 ferror 和 feof 函数来区分读取失败和到文件末尾。
- 第二点是 fgets 函数当遇到 换行符\\n 或者读取到 size-1 个字符时会停止读取,然后自动在字符串后面添加一个 \\0 作为结束标志。
函数原型:
![技术分享](https://image.cha138.com/20210825/0c2cc695899c439e9858acbfe2cc63d7.jpg)
![技术分享](C:\\Users\\Administrator.ZX-201607021417\\AppData\\Local\\YNote\\data\\qqCB8E4837B89F52255A132D320D34A33C\\559f796a3f264ad0bc9e96599aee8384\\clipboard.png)
函数参数:
- s:要写入的字符串
- stream:要操作的文件流指针
返回值:
- 调用成功时返回 非负值
- 调用失败时返回 EOF(-1)
要注意的是:fputs 函数不会将字符串末尾的 \\0 写入到 stream 中。
======================================================
以块为单位进行读写操作:fread 函数和 fwrite 函数
函数原型:
![技术分享](https://image.cha138.com/20210825/dba4243ec96e4e11b210ef163e8e2209.jpg)
![技术分享](C:\\Users\\Administrator.ZX-201607021417\\AppData\\Local\\YNote\\data\\qqCB8E4837B89F52255A132D320D34A33C\\0e701c8a0c7d401a98f449072e3d3376\\clipboard.png)
函数参数:
- ptr:保存读取出内容的首地址
- size:每个memb所占的字节数
- nmemb:读取的memb数目
- stream:要操作的文件流指针
返回值:
- 调用成功时返回 实际读到的memb数,而不是字节数
- 调用失败时返回 0
- 读取到文件末尾时返回 0
和上面的几个函数一样,需要使用 feof 函数和 ferror 函数来区分读取出错还是到达文件末尾。
函数原型:
![技术分享](https://image.cha138.com/20210825/5d6750cddbd84c13857a4f521b8063d7.jpg)
![技术分享](C:\\Users\\Administrator.ZX-201607021417\\AppData\\Local\\YNote\\data\\qqCB8E4837B89F52255A132D320D34A33C\\20031c1bd1ed4ea5b17b75746e490bd9\\clipboard.png)
函数参数:
- ptr:将要写入内容的首地址
- size:每个memb的大小
- nmemb:想要写入memb的数目
- stream:想要操作的文件流指针
返回值:
- 调用成功时返回 nmemb数
- 调用失败时返回 0
以上是关于标准文件IO详解---读和写流的主要内容,如果未能解决你的问题,请参考以下文章