_chsize
modifie la taille d'un fichier.un plus version sécurisée est disponible ; consultez _chsize_s.
int _chsize(
int fd,
long size
);
Paramètres
fd
Descripteur de fichier référence à un fichier ouvert.size
nouvelle longueur du fichier en octets.
Valeur de retour
_chsize retourne la valeur 0 si la taille du fichier est correctement modifiée.Une valeur de retour - 1 indique une erreur : errno est défini à EACCES si le fichier spécifié est verrouillé contre l'accès, à EBADF si le fichier spécifié est en lecture seule ou le descripteur est valide, à ENOSPC si aucun espace n'est autorisé sur le périphérique, ou à EINVAL si size est inférieur à zéro.
Consultez _doserrno, errno, _sys_errlist, et _sys_nerr pour plus d'informations sur ce point, ainsi que d'autres, les codes de retour.
Notes
La fonction d' _chsize étend ou tronque le fichier associé à fd à la longueur spécifiée par size.Le fichier doit être ouvert dans un mode qui permet d'écrire.Les caractères Null (" \ 0 ") sont ajoutés si le fichier est étendu.Si le fichier est tronqué, toutes les données de la fin de le fichier raccourci vers la longueur d'origine du fichier est perdue.
cette fonction valide ses paramètres.Si size est inférieur à zéro ou fd est un mauvais descripteur de fichier, le gestionnaire de paramètre non valide est appelé, comme décrit dans Validation des paramètres.
Configuration requise
routine |
en-tête requis |
en-tête facultatif |
---|---|---|
_chsize |
<io.h> |
<errno.h> |
Pour plus d'informations de compatibilité, consultez compatibilité dans l'introduction.
Exemple
// 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 );
}
}