ftell, _ftelli64ftell, _ftelli64

파일 포인터의 현재 위치를 가져옵니다.Gets the current position of a file pointer.

구문Syntax

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

매개 변수Parameters

스트림stream
대상 파일 구조.Target FILE structure.

Return ValueReturn Value

_ftelli64 현재 파일 위치를 반환 합니다.ftell and _ftelli64 return the current file position. 텍스트 모드에서 캐리지 리턴-줄 바꿈 변환이 발생 하므로 ftell_ftelli64 에서 반환 된 값에는 텍스트 모드로 연 스트림의 실제 바이트 오프셋이 반영 되지 않을 수 있습니다.The value returned by ftell and _ftelli64 may not reflect the physical byte offset for streams opened in text mode, because text mode causes carriage return-line feed translation. Ftell 또는 _fseeki64 _ftelli64 와 함께 ftell 를 사용 하 여 파일 위치로 올바르게 돌아갑니다.Use ftell with fseek or _ftelli64 with _fseeki64 to return to file locations correctly. 오류가 발생 하면 매개 변수 유효성 검사에 설명 된 대로 ftell_ftelli64 잘못 된 매개 변수 처리기를 호출 합니다.On error, ftell and _ftelli64 invoke the invalid parameter handler, as described in Parameter Validation. 계속 해 서 실행 하도록 허용한 경우 이러한 함수는-1L을 반환 하 고 errno 를 errno에 정의 된 두 상수 중 하나로 설정 합니다. 넣기.If execution is allowed to continue, these functions return -1L and set errno to one of two constants, defined in ERRNO.H. Ebadf 상수는 stream 인수가 잘못 된 파일 포인터 값 이거나 열려 있는 파일을 참조 하지 않음을 의미 합니다.The EBADF constant means the stream argument is not a valid file pointer value or does not refer to an open file. EINVAL 는 잘못 된 스트림 인수가 함수에 전달 되었음을 의미 합니다.EINVAL means an invalid stream argument was passed to the function. 검색 되지 않는 장치 (예: 터미널 및 프린터) 또는 스트림이 열려 있는 파일을 참조 하지 않는 경우 반환 값은 정의 되지 않습니다.On devices incapable of seeking (such as terminals and printers), or when stream does not refer to an open file, the return value is undefined.

이러한 반환 코드 및 기타 반환 코드에 대한 자세한 내용은 _doserrno, errno, _sys_errlist 및 _sys_nerr를 참조하세요.See _doserrno, errno, _sys_errlist, and _sys_nerr for more information on these, and other, return codes.

설명Remarks

Ftell_ftelli64 함수는 스트림과연결 된 파일 포인터 (있는 경우)의 현재 위치를 검색 합니다.The ftell and _ftelli64 functions retrieve the current position of the file pointer (if any) associated with stream. 위치는 스트림 시작을 기준으로 하는 오프셋으로 표현됩니다.The position is expressed as an offset relative to the beginning of the stream.

데이터를 추가하기 위해 파일이 열리면 현재 파일 위치는 다음 쓰기가 수행되는 위치가 아니라 마지막 I/O 작업에 의해 결정됩니다.Note that when a file is opened for appending data, the current file position is determined by the last I/O operation, not by where the next write would occur. 예를 들어 파일이 추가를 위해 열리고 마지막 작업이 읽기였다면 파일 위치는 다음 쓰기가 시작되는 위치가 아니라 다음 읽기 작업이 시작되는 지점입니다.For example, if a file is opened for an append and the last operation was a read, the file position is the point where the next read operation would start, not where the next write would start. 추가 하기 위해 파일을 열면 파일 위치가 쓰기 작업 전에 파일의 끝으로 이동 합니다. 추가를 위해 열린 파일에서 i/o 작업이 아직 발생 하지 않은 경우 파일 위치는 파일의 시작 부분입니다.(When a file is opened for appending, the file position is moved to end of file before any write operation.) If no I/O operation has yet occurred on a file opened for appending, the file position is the beginning of the file.

텍스트 모드에서 Ctrl+Z는 입력 시 파일 끝 문자로 해석됩니다.In text mode, CTRL+Z is interpreted as an end-of-file character on input. 읽기/쓰기용으로 열려 있는 파일에서 fopen 및 모든 관련 루틴은 파일 끝에 CTRL + Z가 있는지 확인 하 고 가능 하면 제거 합니다.In files opened for reading/writing, fopen and all related routines check for a CTRL+Z at the end of the file and remove it if possible. 이 작업은 ftellftell 또는 _ftelli64_fseeki64의 조합을 사용 하 여 CTRL + Z로 끝나는 파일 내에서 이동 하면 파일의 끝 부분에서 fstor _ftelli64 가 제대로 동작 하지 않을 수 있기 때문에 수행 됩니다.This is done because using the combination of ftell and fseek or _ftelli64 and _fseeki64, to move within a file that ends with a CTRL+Z may cause ftell or _ftelli64 to behave improperly near the end of the file.

이 함수는 실행 중에 호출 스레드를 잠그므로 스레드로부터 안전합니다.This function locks the calling thread during execution and is therefore thread-safe. 잠기지 않는 버전은 _ftell_nolock를 참조 하세요.For a non-locking version, see _ftell_nolock.

기본적으로이 함수의 전역 상태는 응용 프로그램으로 범위가 지정 됩니다.By default, this function's global state is scoped to the application. 이를 변경 하려면 CRT의 전역 상태를 참조 하세요.To change this, see Global state in the CRT.

요구 사항Requirements

기능Function 필수 헤더Required header 선택적 헤더Optional headers
ftellftell <stdio.h><stdio.h> <errno.h><errno.h>
_ftelli64_ftelli64 <stdio.h><stdio.h> <errno.h><errno.h>

호환성에 대한 자세한 내용은 Compatibility을 참조하세요.For additional compatibility information, see Compatibility.

예제Example

// 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

참조See also

스트림 I/OStream I/O
fopen, _wfopenfopen, _wfopen
fgetposfgetpos
fseek, _fseeki64fseek, _fseeki64
_lseek, _lseeki64_lseek, _lseeki64