fgets和ferror
来源:互联网 发布:电脑深度清理软件 编辑:程序博客网 时间:2024/06/07 19:20
从文件结构体指针stream中读取数据,每次读取一行。读取的数据保存在buf指向的字符数组中,每次最多读取bufsize-1个字符(第bufsize个字符赋'\0'),如果文件中的该行,不足bufsize个字符,则读完该行就结束。如若该行(包括最后一个换行符)的字符数超过bufsize-1,则fgets只返回一个不完整的行,但是,缓冲区总是以NULL字符结尾,对fgets的下一次调用会继续读该行。函数成功将返回buf,失败或读到文件结尾返回NULL。因此我们不能直接通过fgets的返回值来判断函数是否是出错而终止的,应该借助feof函数或者ferror函数来判断。
功 能:标准输出设备自动刷清(行缓冲)
函数 (ISO C)
函数原型
char *fgets(char *buf, int bufsize, FILE *stream);
参数
*buf: 字符型指针,指向用来存储所得数据的地址。
bufsize: 整型数据,指明存储数据的大小。
*stream: 文件结构体指针,将要读取的文件流。
返回值
成功,则返回第一个参数buf;
在读字符时遇到end-of-file,则eof指示器被设置(可以通过feof进行判断是否到文件尾部,也可以通过再一次调用返回为null进行判断),如果还没读入任何字符就遇到这种情况,则buf保持原来的内容(全都是'\0'),返回NULL;
如果发生读入错误,error指示器被设置,返回NULL,buf的值可能被改变。
功能
注意:《UNIX 环境高级编程》中指出,每次调用fgets函数会造成标准输出设备自动刷清!
ferror:
在调用各种输入输出函数(如 putc.getc.fread.fwrite等)时,如果出现错误,除了函数返回值有所反映外,还可以用ferror函数检查。 它的一般调用形式为 ferror(fp);如果ferror返回值为0(假),表示未出错。如果返回一个非零值,表示出错。应该注意,对同一个文件 每一次调用输入输出函数,均产生一个新的ferror函 数值,因此,应当在调用一个输入输出函数后立即检 查ferror函数的值,否则信息会丢失。在执行fopen函数时,ferror函数的初始值自动置为0。
用 法: int ferror(FILE *stream);
- fgets和ferror
- feof和ferror
- 文件流中读行的正确使用(fgets、feof、ferror)
- ferror
- ferror
- 读写流-fgetc、fputc、fgets、fputs、fread、ferror、fwrite、clearerr、ungetc
- fgets和gets
- fputs 和 fgets
- fscanf和fgets
- fseek()和fgets()
- fread 和 fgets
- fread和fgets
- gets和fgets函数
- fgets和feof
- fgets函数 和 fputs
- fgets 和fputs函数
- fscanf和fgets
- fgets()和fputs()函数
- Windows 下使用ftp批处理脚本
- Java堆、栈和常量池以及相关String的详细讲解(经典中的经典)
- 【Eclipse】推荐UML插件Green UML、AmaterasUML
- 使用srandom和random产生伪随机序列
- IIS架构
- fgets和ferror
- Android小记:-获取缓存大小和清除缓存功能
- jQuery实现的加载页面过渡效果
- 面向对象程序设计
- NSDate、NSDateFormatter、NSDatePicker介绍
- 黑马程序员——Java 网络编程学习
- instanceof和类型转换之谜
- Android声音播放之SoundPool
- Android Fragment 真正的完全解析(上)