fseeko64 和 ftello64 是 fseek 和 ftell 的“大型文件”版本。它们采用并返回 INTEGER*8 的文件位置偏移值。(“大型文件”是指大于 2 GB 的文件,因此字节位置必须以 64 位整型值表示。)可使用这些函数确定大型文件的位置和/或复位大型文件。
该函数的调用方式如下所示:
INTEGER fseeko64 n = fseeko64( lunit, offset64, from ) |
|||
lunit |
INTEGER*4 |
输入 |
开放的逻辑单元 |
offset64 |
INTEGER*8 |
输入 |
相对于 from 指定位置的 64 位字节偏移量 |
from |
INTEGER*4 |
输入 |
0=文件开头 1=当前位置 2=文件结尾 |
返回值 |
INTEGER*4 |
输出 |
n=0:OK;n>0:系统错误代码 |
对于后续文件,在调用 fseeko64 后执行输出操作(例如 WRITE)会导致 fseeko64 位置后面的所有数据记录被删除,并替换为新的数据记录(以及文件结束标记)。只有在使用直接访问文件时,才能将记录重新写入到位。
示例:fseeko64()-将 MyFile 复位到距开头两个字节处:
INTEGER fseeko64, lunit/1/, from/0/, n INTEGER*8 offset/200/ open( UNIT=lunit, FILE=’MyFile’ ) n = fseeko64( lunit, offset, from ) if ( n .gt. 0 ) stop ’fseek error’ end |
该函数的调用方式如下所示:
INTEGER*8 ftello64 n = ftello64( lunit ) |
|||
lunit |
INTEGER*4 |
输入 |
开放的逻辑单元 |
返回值 |
INTEGER*8 |
输出 |
n≥0:n 为距文件开头的字节偏移量 n<0:n 为系统错误代码 |
示例:ftello64():
INTEGER*8 ftello64, lunit/1/, n open( UNIT=lunit, FILE=’MyFile’ ) ... n = ftello64( lunit ) if ( n .lt. 0 ) stop ’ftell error’ ... |