_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