次の方法で共有


_tell, _telli64

ファイル ポインターの位置を取得します。

構文

long _tell(
   int handle
);
__int64 _telli64(
   int handle
);

パラメーター

handle
開いているファイルを参照するファイル記述子。

戻り値

ファイル ポインターの現在の位置。 シーク非対応のデバイスでは、戻り値は未定義です。

-1L の戻り値はエラーを示します。 handleが無効なファイル記述子である場合は、「パラメーターの検証で説明されているように、無効なパラメーター ハンドラーが呼び出されます。 実行の継続が許可された場合、これらの関数は errnoEBADF に設定し、-1L を返します。

リターン コードの詳細については、「errno_doserrno_sys_errlist、および _sys_nerr」を参照してください。

解説

_tell 関数は、handle 引数に関連付けられたファイル ポインター (存在する場合) の現在の位置を取得します。 位置は、ファイルの先頭からのバイト数で表されます。 _telli64 関数では、この値は 64 ビットの整数で表されます。

既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT でのグローバル状態」を参照してください。

要件

ルーチンによって返される値 必須ヘッダー
_tell, _telli64 <io.h>

互換性の詳細については、「 Compatibility」を参照してください。

// crt_tell.c
// This program uses _tell to tell the
// file pointer position after a file read.
//

#include <io.h>
#include <stdio.h>
#include <fcntl.h>
#include <share.h>
#include <string.h>

int main( void )
{
   int  fh;
   char buffer[500];

   if ( _sopen_s( &fh, "crt_tell.txt", _O_RDONLY, _SH_DENYNO, 0) )
   {
      char buff[50];
      _strerror_s( buff, sizeof(buff), NULL );
      printf( buff );
      exit( -1 );
   }

   if( _read( fh, buffer, 500 ) > 0 )
      printf( "Current file position is: %d\n", _tell( fh ) );
   _close( fh );
}

入力: crt_tell.txt

Line one.
Line two.

出力

Current file position is: 20

関連項目

低レベル I/O
ftell, _ftelli64
_lseek, _lseeki64