fseek
函数 <cstdio>
int fseek ( FILE * stream, long int offset, int origin );
重新定位流位置指示器
将与流关联的位置指示器设置为新位置。
对于以二进制模式打开的流,新位置是通过在原点(origin)指定的参考位置上添加偏移量(offset)来定义的。
对于以文本模式打开的流,offset应该是0或者是之前调用
ftell返回的值,而origin必须是SEEK_SET。
如果函数调用时带有这些参数的其他值,则支持取决于特定的系统和库实现(不可移植)。
在成功调用该函数之后,流的文件结束内部指示符将被清除,并且先前调用
ungetc对该流的所有影响将被删除。
在为更新而打开的流(read+write)上,调用fseek允许在读和写之间切换。
☲ 参数
stream
指向标识流的
FILE对象的指针。
offset
二进制文件:从原点偏移的字节数。
文本文件:可以是零,也可以是ftell返回的值。。
origin
指用作偏移量参考的位置。它由<
cstdio>中定义的以下常量之一指定,专门用作此函数的参数:
常量 |
参考位置 |
SEEK_SET |
文件开始 |
SEEK_CUR |
文件指针的当前位置 |
SEEK_END |
文件终点* |
*允许库实现不支持SEEK_END(因此,使用它的代码没有真正标准的可移植性)。
☉ 返回值
如果成功,函数返回0。
否则,返回非零值。
如果发生读写错误,则设置错误指示符(
ferror)。
☣ 示例
/* fseek example */
#include <stdio.h>
int main ()
{
FILE * pFile;
pFile = fopen ( "example.txt" , "wb" );
fputs ( "This is an apple." , pFile );
fseek ( pFile , 9 , SEEK_SET );
fputs ( " sam" , pFile );
fclose ( pFile );
return 0;
}
|
成功执行此代码后,example.txt文件包含:
This is a sample.
🍄 另请参阅