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