Freigeben über


_chsize

Ändert die Größe einer Datei. Eine sicherere Version ist verfügbar; finden Sie unter _chsize_s.

int _chsize( 
   int fd,
   long size 
);

Parameter

  • fd
    Dateideskriptor, der eine geöffnete Datei verweist.

  • size
    Neue Länge einer Datei in Bytes.

Rückgabewert

_chsize gibt den Wert 0 zurück, wenn die Dateigröße erfolgreich geändert wird. Bei dem Rückgabewert von 1 gibt einen Fehler an: errno wird auf EACCES, wenn die angegebene Datei mit Zugriff gesperrt ist, EBADF, wenn die angegebene Datei schreibgeschützt ist, der ein oder ungültig ist, ENOSPC, wenn kein Platz auf dem Gerät vorhanden ist, oder EINVAL festgelegt, wenn size kleiner als null ist.

Weitere Informationen zu diesen und anderen Rückgabecodes finden Sie unter _doserrno, errno, _sys_errlist und _sys_nerr.

Hinweise

Die _chsize-Funktion erweitert oder schneidet die Datei ab, die mit fd zur Länge zugeordnet wird, die von size angegeben wird. Die Datei muss in einem Modus geöffnet werden, ermöglicht der zu schreiben. NULL-Zeichen ("\ 0 ") angefügt werden, wenn sie erweitert wird. Wenn die Datei abgeschnitten wird, wurden alle Daten vom Ende der komprimierten Datei zur ursprünglichen Größe der Datei verloren.

Diese Funktion überprüft ihre Parameter. Wenn size kleiner ist, oder als fd ein ungültiger Dateideskriptor ist, wird der ungültige Parameterhandler aufgerufen, wie in Parametervalidierung beschrieben.

Anforderungen

Routine

Erforderlicher Header

Optionaler Header

_chsize

<io.h>

<errno.h>

Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität in der Einführung.

Beispiel

// 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 );
   }
}
  

.NET Framework-Entsprechung

Siehe auch

Referenz

Dateibehandlung

_close

_sopen, _wsopen

_open, _wopen