_chsize
Cambia el tamaño de un archivo. Una versión más segura está disponible; vea _chsize_s.
int _chsize(
int fd,
long size
);
Parámetros
fd
Descriptor de archivo que hace referencia a un archivo abierto.size
Nueva longitud en bytes de un archivo.
Valor devuelto
_chsize devuelve el valor 0 si el tamaño de archivo cambia correctamente. Un valor devuelto de – 1 indica un error: errno se establece en EACCES si el archivo especificado está bloqueado y el acceso, a EBADF si el archivo especificado es de solo lectura o descriptor es no válido, a ENOSPC si no se permite ningún espacio en el dispositivo, o a EINVAL si size es menor que cero.
Vea _doserrno, errno, _sys_errlist y _sys_nerr para obtener más información sobre estos y otros códigos de retorno.
Comentarios
La función de _chsize extiende o trunca el archivo asociado a fd con la longitud especificada por size. El archivo debe estar abierto en un modo que permite escribir. Se agregan caracteres null (“\0”) si se mejora el archivo. Si se trunca el archivo, todos los datos del final del archivo abreviado a la longitud original del archivo se pierde.
Esta función valida sus parámetros. Si size es menor que cero o fd es un archivo dañado descriptor, se invoca el controlador no válido de parámetro, tal y como se describe en Validación de parámetros.
Requisitos
Rutina |
Encabezado necesario |
Encabezado opcional |
---|---|---|
_chsize |
<io.h> |
<errno.h> |
Para obtener más información de compatibilidad, vea Compatibilidad en la Introducción.
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 );
}
}