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
fseek
Ctrl+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