當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。