首页 > 代码库 > 标准文件IO详解(五)---读和写流

标准文件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详解(五)---读和写流