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