函式
<cstdio>

fseek

int fseek ( FILE * stream, long int offset, int origin );
重新定位流的位置指示器
將與 stream 關聯的位置指示器設定為新位置。

對於以二進位制模式開啟的流,新位置是透過將 offset 新增到由 origin 指定的參考位置來定義的。

對於以文字模式開啟的流,offset 必須是零或先前呼叫 ftell 返回的值,並且 origin 必須是SEEK_SET.

如果使用這些引數的其他值呼叫該函式,支援情況取決於具體的系統和庫實現(不可移植)。

此函式成功呼叫後,stream檔案結束內部指示器會被清除,並且先前對該 stream 呼叫 ungetc 的所有效果都會被丟棄。

在以更新模式(讀+寫)開啟的流上,呼叫fseek允許在讀取和寫入之間切換。

引數

stream
指向一個 FILE 物件的指標,該物件標識了流。
offset
二進位制檔案:從 origin 開始的偏移位元組數。
文字檔案:零,或 ftell 返回的值。
origin
用作 offset 的參考位置。它由 <cstdio> 中定義的以下常量之一指定,這些常量僅用於此函式的引數
常量參考位置
SEEK_SET檔案開頭
SEEK_CUR檔案指標的當前位置
SEEK_END檔案結尾 *
* 庫實現允許不支援有意義地支援SEEK_END(因此,使用它的程式碼沒有真正的標準可移植性)。

返回值

如果成功,則函式返回零。
否則,它返回非零值。
如果發生讀寫錯誤,則會設定錯誤指示器ferror)。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
/* 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.


另見