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