_chsize
Modifica la dimensione di un file. È disponibile una versione più sicura; vedere _chsize_s
.
Sintassi
int _chsize(
int fd,
long size
);
Parametri
fd
Descrittore del file che fa riferimento a un file aperto.
size
Nuova lunghezza, in byte, del file.
Valore restituito
_chsize
restituisce il valore 0 se la dimensione del file viene modificata. Un valore restituito -1 indica un errore: errno
è impostato su EACCES
se il file specificato è di sola lettura o se il file specificato è bloccato per l'accesso, a EBADF
se il descrittore non è valido, ENOSPC
se non viene lasciato spazio nel dispositivo o EINVAL
se size
è minore di zero.
Per altre informazioni sui codici restituiti, vedere errno
, _doserrno
, _sys_errlist
e _sys_nerr
.
Osservazioni:
La funzione _chsize
estende o tronca il file associato a fd
in base alla lunghezza specificata da size
. Il file deve essere aperto in una modalità che consente la scrittura. Se il file viene esteso, vengono aggiunti caratteri null ("\0"). Se il file viene troncato, si perderanno tutti i dati a partire dalla fine del file abbreviato fino alla fine del file originale.
Questa funzione convalida i relativi parametri. Se size
è minore di zero o fd
è un descrittore di file non valido, viene richiamato il gestore di parametri non validi, come descritto in Convalida dei parametri.
Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificare questo comportamento, vedere Stato globale in CRT.
Requisiti
Ciclo | Intestazione obbligatoria | Intestazione facoltativa |
---|---|---|
_chsize |
<io.h> | <errno.h> |
Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).
Esempio
// 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