fgets函数执行完成后,文件指针如何移动?
2015-11-19 16:34
253 查看
用fgets执行之后,读取了文件中的一行,这时文件位置指针是自动指向文件的下一行的开头吗,还是指向当前行的结尾?如果一行的字符串没读取完会怎样?
实例结果:
如果一行的字符串没读取完会,下一次会接着上一次读取;
如果读完了,直接从下一行开头开始。
百度百科:
从文件结构体指针stream中读取数据,每次读取一行。
读取的数据保存在buf指向的字符数组中,每次最多读取bufsize-1个字符(第bufsize个字符赋'\0'),如果文件中的该行,不足bufsize个字符,则读完该行就结束。
如若该行(包括最后一个换行符)的字符数超过bufsize-1,则fgets只返回一个不完整的行,但是,缓冲区总是以NULL字符结尾,对fgets的下一次调用会继续读该行。
函数成功将返回buf,失败或读到文件结尾返回NULL。因此我们不能直接通过fgets的返回值来判断函数是否是出错而终止的,应该借助feof函数或者ferror函数来判断。
实例结果:
如果一行的字符串没读取完会,下一次会接着上一次读取;
如果读完了,直接从下一行开头开始。
百度百科:
从文件结构体指针stream中读取数据,每次读取一行。
读取的数据保存在buf指向的字符数组中,每次最多读取bufsize-1个字符(第bufsize个字符赋'\0'),如果文件中的该行,不足bufsize个字符,则读完该行就结束。
如若该行(包括最后一个换行符)的字符数超过bufsize-1,则fgets只返回一个不完整的行,但是,缓冲区总是以NULL字符结尾,对fgets的下一次调用会继续读该行。
函数成功将返回buf,失败或读到文件结尾返回NULL。因此我们不能直接通过fgets的返回值来判断函数是否是出错而终止的,应该借助feof函数或者ferror函数来判断。
<?php $handle = @fopen("/tmp/inputfile.txt", "r"); if ($handle) { while (!feof($handle)) { $buffer = fgets($handle, 4096); echo $buffer; } fclose($handle); } ?>
相关文章推荐
- WebService 的创建,部署和使用
- Dialog底部滑出并横向占满屏幕
- 后台运行spark-submit命令的方法
- linux下安装DB2的详细步骤
- 在linux下安装db2全过程
- 矩阵旋转偏移,Matrix
- 数据库中间件druid更换c3p0以及druid数据源监控配置
- Android Fragment 真正的完全解析(上)
- Tomcat Web服务器的配置及详解
- Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验
- 通信行业并非那么”腹黑“
- 面试题47:不用加减乘除做加法
- 微信、qq时间格式模板
- JavaWeb开发基础:Servlet登录小实例
- du命令
- 数据绑定(data binding)2
- 关于Eclipse(MyEclipse)中一次性批量导入多个项目Project.
- 正则表达式 整数&正整数
- [11.20] 实验要求
- web入门第四天