_chsize
Cambia la dimensione di un file. È disponibile una versione più sicura; consultare _chsize_s.
int _chsize(
int fd,
long size
);
Parametri
fd
Il descrittore del file che fa riferimento a un file aperto.size
Nuova lunghezza del file in byte.
Valore restituito
_chsize restituisce il valore 0 se le dimensioni del file vengono correttamente modificate. Un valore diverso da -1 indica un errore: errno viene settato su EACCES se il file specificato è bloccato in accesso, su EBADF se il file specificato è in sola lettura o se il descrittore non è valido, su ENOSPC se non vi è spazio disponibile sul dispositivo o EINVAL se size è minore di zero.
Vedere _doserrno, errno, _sys_errlist, e _sys_nerr per ulteriori informazioni su questi, e altri, codici restituiti.
Note
La funzione _chsize estende o tronca il file associato con fd alla lunghezza specificata da size. Il file deve essere aperto in una modalità che consente di scrivere. I caratteri null ('\0') vengono aggiunti se il file viene esteso. Se il file viene troncato, tutti i dati dalla fine del file ridotto alla lunghezza originale del file verranno persi.
Questa funzione convalida i parametri. Se size è minore di zero o fd è un descrittore del file non valido, viene richiamato il gestore di parametro non valido, come descritto in Convalida dei parametri.
Requisiti
Routine |
Intestazione obbligatoria |
Intestazione facoltativa |
---|---|---|
_chsize |
<io.h> |
<errno.h> |
Per ulteriori informazioni sulla compatibilità, vedere Compatibilità nell'introduzione.
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 );
}
}