다음을 통해 공유


_chsize

파일 크기를 변경합니다. 보다 안전한 버전을 사용할 수 있습니다. 를 참조하세요 _chsize_s.

구문

int _chsize(
   int fd,
   long size
);

매개 변수

fd
열려 있는 파일을 참조하는 파일 설명자입니다.

size
파일의 새 길이(바이트)입니다.

반환 값

파일 크기가 제대로 변경되면 _chsize는 값 0을 반환합니다. 반환 값 -1은 오류를 errno 나타냅니다. 지정된 파일이 읽기 전용이거나 지정된 파일이 액세스에 대해 잠겨 있는 경우, 설명자가 유효하지 않은 경우, EBADF ENOSPC 디바이스 EINVAL 에 공간이 남아 있지 않거나 0보다 작은 경우 size 로 설정 EACCES 됩니다.

반환 코드에 대한 자세한 내용은 , , 및 를 참조하세요errno._sys_nerr_sys_errlist_doserrno

설명

_chsize 함수는 fd와 연결된 파일을 size로 지정된 길이까지 확장하거나 자릅니다. 파일은 쓰기를 허용하는 모드로 열려 있어야 합니다. 파일이 확장되는 경우 Null 문자('\0')가 추가됩니다. 파일이 잘린 경우 짧아진 파일의 끝부터 파일의 원래 길이까지의 모든 데이터가 손실됩니다.

이 함수는 해당 매개 변수의 유효성을 검사합니다. 0보다 작거나 fd 잘못된 파일 설명자인 경우 size 매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기가 호출됩니다.

기본적으로 이 함수의 전역 상태는 애플리케이션으로 범위가 지정됩니다. 이 동작을 변경하려면 CRT 전역 상태를 참조하세요.

요구 사항

루틴에서 반환된 값 필수 헤더 선택적 헤더
_chsize <io.h> <errno.h>

호환성에 대한 자세한 내용은 호환성을 참조하세요.

예시

// crt_chsize.c
// This program uses _filelength to report the size
// of a file before and after modifying it with _chsize.

#include <io.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <share.h>

int main( void )
{
   int fh, result;
   unsigned int nbytes = BUFSIZ;

   // Open a file
   if( _sopen_s( &fh, "data", _O_RDWR | _O_CREAT, _SH_DENYNO,
                 _S_IREAD | _S_IWRITE ) == 0 )
   {
      printf( "File length before: %ld\n", _filelength( fh ) );
      if( ( result = _chsize( fh, 329678 ) ) == 0 )
         printf( "Size successfully changed\n" );
      else
         printf( "Problem in changing the size\n" );
      printf( "File length after:  %ld\n", _filelength( fh ) );
      _close( fh );
   }
}
File length before: 0
Size successfully changed
File length after:  329678

참고 항목

파일 처리
_close
_sopen, _wsopen
_open, _wopen