C++ 中的fseek() 函数设置给定文件流的文件位置指示符。
fseek() 函数在<cstdio> 头文件中定义。
fseek()原型
int fseek(FILE* stream, long offset, int origin);
如果文件以二进制模式打开,则文件指针的新位置正好是距离原点的偏移字节。
如果文件以文本模式打开,则支持的偏移值为:
- 零:它适用于任何原点值,即 SEEK_SET、SEEK_CUR 和 SEEK_END。
- 调用 ftell(stream) 返回的值:它仅适用于 SEEK_SET 的来源。
如果流是wide-oriented,则应用文本流和二进制流的限制,即,SEEK_SET 允许 ftell 的结果,并且从 SEEK_SET 和 SEEK_CUR 允许零偏移,但不包括 SEEK_END。
fseek 函数还取消 ungetc 的影响并清除文件结束状态(如果适用)。
如果发生读取或写入错误,则设置 ferror 并且文件位置不受影响。
参数:
stream
:要修改的文件流。offset
:从原点位移的字符数。origin
:用作添加到偏移量的参考的位置。它可以具有以下值:
价值 | 说明 |
---|---|
SEEK_SET | 文件开头 |
SEEK_CUR | 文件指针的当前位置 |
SEEK_END | 文件结束 |
返回:
- 成功时,fseek() 函数返回零,否则返回非零。
示例:fseek() 函数如何工作?
#include <cstdio>
int main()
{
FILE* fp = fopen("example.txt","w+");
char ch;
fputs("Erica 25 Berlin", fp);
rewind(fp);
printf("Name: ");
while((ch=fgetc(fp))!=' ')
putchar(ch);
putchar('\n');
printf("Age: ");
fseek(fp,10,SEEK_SET);
while((ch=fgetc(fp))!=' ')
putchar(ch);
putchar('\n');
printf("City: ");
fseek(fp,15,SEEK_SET);
while((ch=fgetc(fp))!=EOF)
putchar(ch);
putchar('\n');
fclose(fp);
return 0;
}
运行程序时,输出将是:
Name: Erica Age: 25 City: Berlin
相关用法
- C++ fsetpos()用法及代码示例
- C++ fstream close用法及代码示例
- C++ fstream swap用法及代码示例
- C++ fstream is_open用法及代码示例
- C++ fstream rdbuf用法及代码示例
- C++ fscanf()用法及代码示例
- C++ fstream open用法及代码示例
- C++ fcvt()用法及代码示例
- C++ fwscanf()用法及代码示例
- C++ fmax()用法及代码示例
- C++ fdim()用法及代码示例
- C++ fmin()用法及代码示例
- C++ fetestexcept()用法及代码示例
- C++ forward_list::unique()用法及代码示例
- C++ forward_list::emplace_front()用法及代码示例
- C++ fopen()用法及代码示例
- C++ forward_list::max_size()用法及代码示例
- C++ forward_list::reverse()用法及代码示例
- C++ feupdateenv()用法及代码示例
- C++ forward_list::swap()用法及代码示例
注:本文由纯净天空筛选整理自 C++ fseek()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。