说明:本文主要是对man 帮助命令的翻译,若有错误,欢迎指正
在上一篇博客中我们介绍了fseek函数,fseek函数可以将一个打开的文件的指示符重新定位到你想定位的位置。使用SEEK_SET,SEEK_CUR,SEEK_END,作为相对位置,相距n个字节,n是long型。本片文章,继续讲述与fseek相关的其他几个函数:ftell,rewind,fgetpos,fsetpos。
ftell
定义
1 |
|
说明
ftell() 用于得到文件位置指针当前位置相对于文件首的偏移字节数。在随机方式存取文件时,由于文件位置频繁的前后移动,程序不容易确定文件的当前位置。(2.1G以上的文件操作时可能出错。)
调用失败时返回-1,如果stream=NULL会引发程序中断。
我们可以使用ftell获得文件的大小。
示例
1 |
|
1 | 运行结果: |
在windows中查看test.txt的文件属性,发现大小也是1848字节。
rewind
定义
1 |
|
说明
rewind()函数用于将文件指针重新指向文件的开头,同时清除和文件流相关的错误和标记
相当于调用fseek(stream, 0, SEEK_SET)
示例
1 |
|
1 | 运行结果: |
fgetpos 和 fsetpos
定义
1 |
|
说明
fgetpos()函数和 ftell()类似,他只是把返回的指示符位置保存到 pos 中。
fsetpos函数功能上和fseek类似,根据 * pos中的值设置当前文件位置,它必须是前面在同一个流上的调用fgetpos所返回的一个值。
如果调用成功,这个函数返回0。
如果遇到了错误,它返回一个非零值,并在errno中存储一个因编译器而异的正值。
getpos和fsetpos函数是标准C新增的。
增加他们的目的是为了处理那些因为过于庞大而无法由long int类型的整数来定位的文件,在一些非UNIX系统中,一个 fpos_t 对象可能是一个复杂的对象。
示例
test.txt的内容:1
123
1 |
|
1 | 运行结果: |
关于ftell,rewind,fgetpos,fsetpos你了解了吗,自己验证一下吧^_^