Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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_errliste _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