다음을 통해 공유


ftell, _ftelli64

파일 포인터의 현재 위치를 가져옵니다.

구문

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

매개 변수

stream
대상 FILE 구조체입니다.

반환 값

ftell_ftelli64는 현재 파일 위치를 반환합니다. 텍스트 모드로 인해 캐리지 리턴 라인 피드 변환이 발생하므로 반환되는 값 ftell_ftelli64 텍스트 모드에서 열린 스트림의 실제 바이트 오프셋을 반영하지 않을 수 있습니다. 파일 위치로 fseek 올바르게 돌아가려면 함께 사용하거나 _ftelli64 함께 _fseeki64 사용합니다ftell. 오류가 발생하면 ftell _ftelli64 매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기를 호출합니다. 실행을 계속하도록 허용된 경우 이러한 함수는 -1L을 반환하고 정의된 두 상수 ERRNO.H중 하나로 설정합니다errno. 상수는 EBADF 인수가 stream 유효한 파일 포인터 값이 아니거나 열려 있는 파일을 참조하지 않음을 의미합니다. EINVAL은 잘못된 stream 인수가 함수에 전달되었음을 의미합니다. 검색할 수 없는 디바이스(예: 터미널 및 프린터)에서 또는 stream 열려 있는 파일을 참조하지 않으면 반환 값이 정의되지 않습니다.

반환 코드에 대한 자세한 내용은 , , 및 를 참조하세요errno._sys_nerr_sys_errlist_doserrno

설명

및 함수는 ftell 연결된 파일 포인터(있는 경우)의 현재 위치를 검색합니다stream._ftelli64 위치는 스트림 시작을 기준으로 하는 오프셋으로 표현됩니다.

데이터를 추가하기 위해 파일이 열리면 현재 파일 위치는 다음 쓰기가 수행되는 위치가 아니라 마지막 I/O 작업에 의해 결정됩니다. 예를 들어 추가에 대해 파일이 열려 있고 마지막 작업이 읽기라고 가정합니다. 파일 위치는 다음 쓰기가 시작되는 위치가 아니라 다음 읽기 작업이 시작되는 지점입니다. 추가를 위해 파일을 열면 쓰기 작업 전에 파일 위치가 파일 끝으로 이동됩니다. 추가를 위해 열린 파일에서 I/O 작업이 아직 발생하지 않은 경우 파일 위치는 파일의 시작 위치입니다.

텍스트 모드에서 Ctrl+Z는 입력 시 파일 끝 문자로 해석됩니다. 읽기/쓰기를 위해 열린 파일에서 fopen 및 모든 관련 루틴은 파일 끝에 CTRL+Z가 있는지 확인하고 가능하면 이를 제거합니다. ftell fseekCtrl+Z로 끝나는 파일 내에서 이동하거나 _ftelli64 _fseeki64파일의 끝 부근에서 부적절하게 동작할 수 ftell _ftelli64 있기 때문입니다.

이 함수는 실행 중에 호출 스레드를 잠그므로 스레드로부터 안전합니다. 잠기지 않는 버전의 경우 _ftell_nolock을 참조하세요.

기본적으로 이 함수의 전역 상태는 애플리케이션으로 범위가 지정됩니다. 이 동작을 변경하려면 CRT 전역 상태를 참조하세요.

요구 사항

함수 필수 헤더 선택적 헤더
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 );
   }
}
Position after trying to read 100 bytes: 100

참고 항목

스트림 I/O
fopen, _wfopen
fgetpos
fseek, _fseeki64
_lseek, _lseeki64