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 포인터입니다. 또는 origin 아래 허용 된 값 중 하나가 아닌 fseek 및 _fseeki64 의 설명에 따라 잘못 된 매개 변수 처리기를 호출 합니다. 매개 변수 유효성 검사.실행을 계속 수 있으면 이러한 함수를 설정 errno 에 EINVAL 및-1을 반환 합니다.
설명
fseek 및 _fseeki64 파일 포인터 (있는 경우)에 연결 된 이동 기능을 stream 새 위치에 offset 바이트 origin*.* 스트림에서 다음 작업은 새 위치에서 이루어집니다.업데이트에 대 한 열린 stream의 읽기 또는 쓰기 다음 작업 수 있습니다.인수 원점 STDIO에서 정의 된 상수는 다음 중 하나 여야 합니다.H:
SEEK_CUR
파일 포인터의 현재 위치입니다.SEEK_END
파일의 끝입니다.SEEK_SET
파일의 시작 부분입니다.
사용할 수 있습니다 fseek 및 _fseeki64 파일에 포인터를 아무 곳 이나 위치를 변경 합니다.포인터가 파일의 끝을 지 나도 배치할 수 있습니다.fseek및 _fseeki64파일 끝 표시기를 해제 하 고 모든 이전 효과 부정 ungetc 에 대 한 호출 stream.
데이터 추가 대 한 파일을 열 때 현재 파일 위치 없습니다 다음 쓰기가 발생할 위치에서 마지막 I/O 작업에서 결정 됩니다.I/O 작업이 아직 추가 대 한 열린 파일에서 발생 한 경우 파일 위치를 파일의 시작 부분입니다.
텍스트 모드에서 연 스트림에 대 한 fseek 및 _fseeki64캐리지 – 줄 바꿈 변환 시킬 수 있으므로 사용을 제한 된 fseek 및 _fseeki64예기치 않은 결과가 발생할 수 있습니다.경우에 fseek 및 _fseeki64작업에 텍스트 모드에서 연 스트림에 사용할 수 있습니다.
오프셋 0 원점 값을 기준으로 검색 합니다.
오프셋된 값을 사용 하 여 파일의 처음부터 검색을 반환에 대 한 호출에서 ftell 를 사용할 때 fseek또는 _ftelli64사용 하는 경우_fseeki64.
또한 텍스트 모드에서 CTRL + Z는 파일 끝 문자로 입력 해석 됩니다.읽기/쓰기용으로 열 파일에서 fopen 및 모든 관련된 루틴 CTRL + Z를 파일의 끝에 대 한 확인 하 고 가능한 경우 제거 합니다.이 조합 하 여 수행 됩니다 fseek 및 ftell또는_fseeki64 및 _ftelli64, CTRL + Z로 인해 파일 내에서 이동 합니다 fseek 또는 _fseeki64 파일의 끝에 근처에 제대로 동작 합니다.
CRT 시작 되는 파일에 바이트 순서 표시 (BOM)를 열 때 다음 BOM 파일 포인터 위치 (즉, 파일의 실제 내용 시작).필요한 경우 fseek 파일의 시작 부분에 사용 ftell 초기 위치를 가져올 수 및 fseek 0 위치를 대신 하 여.
이 함수는 다른 스레드를 실행 하는 동안 잠금을 설정 하 고 있으므로 스레드로부터 안전한 지.비잠금 버전을 참조 하십시오. _fseek_nolock, _fseeki64_nolock.
요구 사항
Function |
필수 헤더 |
---|---|
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 );
}