fseek
, _fseeki64
파일 포인터를 지정된 위치로 이동합니다.
구문
int fseek(
FILE *stream,
long offset,
int origin
);
int _fseeki64(
FILE *stream,
__int64 offset,
int origin
);
매개 변수
stream
FILE
구조체에 대한 포인터입니다.
offset
origin
부터의 바이트 수입니다.
origin
초기 위치입니다.
반환 값
성공하면 fseek
및 _fseeki64
가 0을 반환합니다. 그렇지 않으면 0이 아닌 값을 반환합니다. 검색을 수행할 수 없는 디바이스에서는 반환 값이 정의되지 않습니다. stream
null 포인터이거나 아래에 fseek
_fseeki64
설명된 허용된 값 중 하나가 아닌 경우 origin
매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기를 호출합니다. 계속해서 실행하도록 허용한 경우 이러한 함수는 errno
를 EINVAL
로 설정하고 -1을 반환합니다.
설명
및 함수는 fseek
연결된 파일 포인터(있는 경우)를 바이트 단위origin
의 새 위치 offset
로 stream
이동합니다._fseeki64
스트림에 대한 다음 작업은 새 위치에서 수행됩니다. 업데이트를 위해 열린 스트림에 대한 다음 작업은 읽기 또는 쓰기일 수 있습니다. 인수 origin
는 다음에 정의된 다음 상수 중 하나여야 합니다.STDIO.H
원본 값 | 의미 |
---|---|
SEEK_CUR |
파일 포인터의 현재 위치 |
SEEK_END |
파일 끝 |
SEEK_SET |
파일 시작 |
fseek
및 _fseeki64
를 사용하여 파일 내에서 포인터의 위치를 변경합니다. 포인터는 파일 끝을 지나서 배치될 수도 있습니다. fseek
파일 _fseeki64
끝 표시기를 지우고 .ungetc
stream
데이터를 추가하기 위해 파일이 열리면 현재 파일 위치는 다음 쓰기가 수행되는 위치가 아니라 마지막 I/O 작업에 의해 결정됩니다. 추가를 위해 열린 파일에서 I/O 작업이 아직 수행되지 않은 경우 파일 위치는 파일의 시작입니다.
캐리지 리턴 라인 피드 변환으로 인해 예기치 않은 결과가 발생할 fseek
수 있으므로 텍스트 모드 fseek
_fseeki64
로 열린 스트림의 _fseeki64
경우 사용이 제한됩니다. 텍스트 모드에서 열린 스트림에서 작동하도록 보장되는 유일한 fseek
_fseeki64
작업은 다음과 같습니다.
원점 값을 기준으로 한 0 오프셋을 사용하여 검색
호출
ftell
에서 반환된 오프셋 값이 있는 파일의 시작 부분에서 사용하거나_ftelli64
사용할fseek
_fseeki64
때 검색합니다.
또한 텍스트 모드에서 Ctrl+Z는 입력 시 파일 끝 문자로 해석됩니다. 읽기/쓰기를 위해 열린 파일에서 fopen
및 모든 관련 루틴은 파일 끝에 CTRL+Z가 있는지 확인하고 가능하면 이를 제거합니다. Ctrl+Z로 끝나는 파일 내에서 이동하거나 _ftelli64
_fseeki64
파일 끝 부근에서 부적절하게 동작할 수 fseek
_fseeki64
있으므로 fseek
ftell
제거됩니다.
CRT에서 BOM(바이트 순서 표시)으로 시작하는 파일을 열면 파일 포인터가 BOM 다음으로 배치됩니다. 즉, 파일의 실제 콘텐츠 시작 부분에 배치됩니다. 파일 ftell
의 시작 부분에 있어야 하는 fseek
경우 초기 위치를 구한 다음 fseek
0을 배치하는 대신 해당 위치로 이동해야 합니다.
이 함수는 실행 중에 다른 스레드를 잠그므로 스레드로부터 안전합니다. 잠금이 아닌 버전은 다음_fseeki64_nolock
을 참조하세요_fseek_nolock
.
기본적으로 이 함수의 전역 상태는 애플리케이션으로 범위가 지정됩니다. 이 동작을 변경하려면 CRT 전역 상태를 참조하세요.
요구 사항
함수 | 필수 헤더 |
---|---|
fseek |
<stdio.h> |
_fseeki64 |
<stdio.h> |
호환성에 대한 자세한 내용은 호환성을 참조하세요.
예시
// crt_fseek.c
// This program opens the file FSEEK.OUT and
// moves the pointer to the file's beginning.
#include <stdio.h>
int main( void )
{
FILE *stream;
char line[81];
int result;
if ( fopen_s( &stream, "fseek.out", "w+" ) != 0 )
{
printf( "The file fseek.out was not opened\n" );
return -1;
}
fprintf( stream, "The fseek begins here: "
"This is the file 'fseek.out'.\n" );
result = fseek( stream, 23L, SEEK_SET);
if( result )
perror( "Fseek failed" );
else
{
printf( "File pointer is set to middle of first line.\n" );
fgets( line, 80, stream );
printf( "%s", line );
}
fclose( stream );
}
File pointer is set to middle of first line.
This is the file 'fseek.out'.
참고 항목
스트림 I/O
fopen
, _wfopen
ftell
, _ftelli64
_lseek
, _lseeki64
rewind