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