共用方式為


ftell _ftelli64

取得目前位置之檔案的指標。

long ftell( 
   FILE *stream 
);
__int64 _ftelli64( 
   FILE *stream 
);

參數

  • stream
    目標FILE結構。

傳回值

ftell與_ftelli64傳回目前的檔案位置。 所傳回的值ftell和_ftelli64可能不會反映實際的位元組位移,以文字模式開啟的資料流因為文字模式] 會換行字元 return–linefeed 轉譯。 Use ftell with fseekor_ftelli64with_fseeki64 to return to file locations correctly. 發生錯誤, ftell和_ftelli64中所述,叫用無效的參數處理常式中, 參數驗證。 如果執行,則允許繼續執行,這些函數會傳回 –1L,並設定errno ERRNO 中所定義的兩個常數的其中一個。H. EBADF常數表示stream引數不是有效的檔案的指標值,或未參照至開啟的檔案。 EINVAL表示無效的stream引數傳遞給函式。 裝置能搜尋 (例如終端機和印表機),或當stream不是指未開啟的檔案,則傳回值是未定義。

請參閱 _doserrno、 errno、 _sys_errlist,以及 _sys_nerr 如需有關這些項目,和其他的詳細資訊,任何傳回碼。

備註

ftell和_ftelli64函式會擷取目前的位置 (如果有的話) 將檔案指標相關聯stream*.* 位置是相對於資料流開頭的位移表示。

請注意當檔案開啟時附加資料,目前的檔案位置依據上次的 I/O 作業,不是將發生下次寫入的位置。 比方說,如果開啟附加檔案時,最後一個作業已讀取的檔案位置正是位置下一個讀取的作業會啟動,請在下一步寫入會啟動。 (當檔案開啟時附加時,檔案位置移動到任何寫入作業之前的檔案結尾。) 如果尚未開啟附加的檔案發生任何 I/O 作業,這個檔案位置是檔案開頭。

在文字模式中,CTRL + Z 組合鍵會解譯成輸入的檔案結尾字元。 在 [檔案開啟進行讀取/寫入, fopen和所有相關的常式會檢查 CTRL + Z 結尾的檔案,並盡可能將它移除。 這是因為使用的組合ftell和fseek或_ftelli64和_fseeki64、 CTRL + Z 組合鍵以結束可能會造成檔案內移動ftell或_ftelli64檔案的結尾附近不當的行為。

這個函式在執行期間會鎖定呼叫的執行緒,所以是安全執行緒。 非鎖定版本,請參閱_ftell_nolock。

需求

Function

所需的標頭

選擇性標頭

ftell

<stdio.h>

<errno.h>

_ftelli64

<stdio.h>

<errno.h>

其他的相容性資訊,請參閱相容性在簡介中。

範例

// crt_ftell.c
// This program opens a file named CRT_FTELL.C
// for reading and tries to read 100 characters. It
// then uses ftell to determine the position of the
// file pointer and displays this position.
 

#include <stdio.h>

FILE *stream;

int main( void )
{
   long position;
   char list[100];
   if( fopen_s( &stream, "crt_ftell.c", "rb" ) == 0 )
   {
      // Move the pointer by reading data: 
      fread( list, sizeof( char ), 100, stream );
      // Get position after read: 
      position = ftell( stream );
      printf( "Position after trying to read 100 bytes: %ld\n",
              position );
      fclose( stream );
   }
}
  

.NET Framework 對等用法

System::IO::FileStream::Position

請參閱

參考

資料流 I/O

fopen _wfopen

fgetpos

fseek _fseeki64

_lseek _lseeki64