当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


C++ fseek()用法及代码示例


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 :用作添加到偏移量的参考的位置。它可以具有以下值:
fseek() 原始值
价值 说明
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++ fseek()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。