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 매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기를 호출합니다. 계속해서 실행하도록 허용한 경우 이러한 함수는 errnoEINVAL 로 설정하고 -1을 반환합니다.

설명

및 함수는 fseek 연결된 파일 포인터(있는 경우)를 바이트 단위origin의 새 위치 offsetstream 이동합니다._fseeki64 스트림에 대한 다음 작업은 새 위치에서 수행됩니다. 업데이트를 위해 열린 스트림에 대한 다음 작업은 읽기 또는 쓰기일 수 있습니다. 인수 origin 는 다음에 정의된 다음 상수 중 하나여야 합니다.STDIO.H

원본 값 의미
SEEK_CUR 파일 포인터의 현재 위치
SEEK_END 파일 끝
SEEK_SET 파일 시작

fseek_fseeki64를 사용하여 파일 내에서 포인터의 위치를 변경합니다. 포인터는 파일 끝을 지나서 배치될 수도 있습니다. fseek파일 _fseeki64 끝 표시기를 지우고 .ungetcstream

데이터를 추가하기 위해 파일이 열리면 현재 파일 위치는 다음 쓰기가 수행되는 위치가 아니라 마지막 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 있으므로 fseekftell 제거됩니다.

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