Compartir a través de


_chsize

Cambia el tamaño de un archivo. Hay disponible una versión más segura; vea _chsize_s.

Sintaxis

int _chsize(
   int fd,
   long size
);

Parámetros

fd
Descriptor de archivo que hace referencia a un archivo abierto.

size
Nueva longitud del archivo en bytes.

Valor devuelto

_chsize devuelve el valor 0 si el tamaño del archivo se modifica correctamente. Un valor devuelto de -1 indica un error: errno se establece EACCES en si el archivo especificado es de solo lectura o el archivo especificado está bloqueado en el acceso, a EBADF si el descriptor no es válido, ENOSPC si no queda espacio en el dispositivo o EINVAL si size es menor que cero.

Para obtener más información sobre los códigos de retorno, vea errno, _doserrno, _sys_errlist y _sys_nerr.

Comentarios

La función _chsize amplía o trunca el archivo asociado a fd según la longitud que size especifique. El archivo debe estar abierto en un modo que permita escritura. Si el archivo se amplía, se anexan caracteres nulos ("\0"). Si el archivo se trunca, se pierden todos los datos desde el final del archivo abreviado hasta la longitud original del archivo.

Esta función valida sus parámetros. Si size es menor que cero o fd es un descriptor de archivo incorrecto, se invoca al controlador de parámetros no válidos, como se describe en Validación de parámetros.

De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.

Requisitos

Routine Encabezado necesario Encabezado opcional
_chsize <io.h> <errno.h>

Para obtener más información sobre compatibilidad, consulte Compatibilidad.

Ejemplo

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

Consulte también

Control de archivos
_close
_sopen, _wsopen
_open, _wopen