_chsize

Modifie la taille d’un fichier. Une version plus sécurisée est disponible ; voir _chsize_s.

Syntaxe

int _chsize(
   int fd,
   long size
);

Paramètres

fd
Descripteur de fichier qui fait référence à un fichier ouvert.

size
Nouvelle longueur, en octets, du fichier.

Valeur retournée

_chsize retourne la valeur 0 si la taille du fichier a été correctement modifiée. Une valeur de retour de -1 indique une erreur : errno est définie EACCES si le fichier spécifié est en lecture seule ou si le fichier spécifié est verrouillé par rapport à l’accès, si EBADF le descripteur n’est pas valide, ENOSPC si aucun espace n’est laissé sur l’appareil ou EINVAL s’il size est inférieur à zéro.

Pour plus d’informations sur les codes de retour, consultez , , _sys_errlist_doserrnoet _sys_nerr.errno

Notes

La fonction _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 l’écriture. Des caractères Null (« \0 ») sont ajoutés si le fichier est étendu. Si le fichier est tronqué, toutes les données depuis la fin du fichier raccourci jusqu’à la longueur d’origine du fichier sont perdues.

Cette fonction valide ses paramètres. S’il size est inférieur à zéro ou fd s’il s’agit d’un descripteur de fichier incorrect, le gestionnaire de paramètres non valide est appelé, comme décrit dans la validation des paramètres.

Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.

Spécifications

Routine En-tête requis En-tête facultatif
_chsize <io.h> <errno.h>

Pour plus d’informations sur la compatibilité, consultez Compatibility.

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 );
   }
}
File length before: 0
Size successfully changed
File length after:  329678

Voir aussi

Gestion des fichiers
_close
_sopen, _wsopen
_open, _wopen