_chsize

Altera o tamanho de um arquivo. Uma versão mais segura está disponível; veja _chsize_s.

Sintaxe

int _chsize(
   int fd,
   long size
);

Parâmetros

fd
Descritor de arquivo que faz referência a um arquivo aberto.

size
Novo tamanho do arquivo em bytes.

Valor retornado

_chsize retornará o valor 0 se o tamanho do arquivo for alterado com sucesso. Um valor retornado de -1 indica um erro: errno é definido como EACCES se o arquivo especificado for somente leitura ou se o arquivo especificado estiver bloqueado no acesso, como EBADF se o descritor for inválido, ENOSPC se não houver espaço no dispositivo ou EINVAL se size for menor que zero.

Para obter mais informações sobre códigos de retorno, confira errno, _doserrno, _sys_errlist e _sys_nerr.

Comentários

A função _chsize estende ou trunca o arquivo associado a fd para o comprimento especificado por size. O arquivo deve ser aberto em um modo que permita gravação. Caracteres nulos ('\0') que serão acrescentados se o arquivo for estendido. Se o arquivo for truncado, todos os dados do final do arquivo reduzido para o tamanho original do arquivo serão perdidos.

Essa função valida seus parâmetros. Se size for menor que zero ou fd for um descritor de arquivo inválido, o manipulador de parâmetro inválido será invocado, conforme descrito em Validação de parâmetro.

Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar esse comportamento, confira Estado global no CRT.

Requisitos

Rotina Cabeçalho necessário Cabeçalho opcional
_chsize <io.h> <errno.h>

Para obter informações sobre compatibilidade, consulte Compatibilidade.

Exemplo

// 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

Confira também

Manipulação de arquivos
_close
_sopen, _wsopen
_open, _wopen