_chsize
Ändert die Größe einer Datei. Eine sicherere Version ist verfügbar; siehe _chsize_s
.
Syntax
int _chsize(
int fd,
long size
);
Parameter
fd
Dateideskriptoren, die auf eine geöffnete Datei verweisen.
size
Neue Länge der Datei in Bytes.
Rückgabewert
_chsize
gibt den Wert 0 zurück, wenn die Dateigröße erfolgreich geändert wurde. Ein Rückgabewert von -1 gibt einen Fehler an: wird festgelegt, errno
wenn die angegebene Datei schreibgeschützt ist oder die angegebene Datei für den Zugriff gesperrt ist, um zu EBADF
überprüfen, ob der Deskriptor ungültig ist, ENOSPC
wenn kein Speicherplatz auf dem Gerät verbleibt oder EINVAL
kleiner size
als Null EACCES
ist.
Weitere Informationen zu Rückgabecodes finden Sie unter , , _doserrno
, _sys_errlist
und _sys_nerr
.errno
Hinweise
Die _chsize
-Funktion erweitert oder verkürzt die mit fd
verknüpfte Datei auf die von size
angegebene Länge. Die Datei muss in einem Modus geöffnet sein, der Schreiben zulässt. Wenn die Datei erweitert wird, werden NULL-Zeichen ('\0') angefügt. Wenn die Datei abgeschnitten wird, gehen alle Daten vom Ende der gekürzten Datei bis zur ursprünglichen Länge der Datei verloren.
Diese Funktion überprüft ihre Parameter. Wenn size
es sich nicht um null handelt oder fd
ein ungültiger Dateideskriptor ist, wird der ungültige Parameterhandler aufgerufen, wie in der Parameterüberprüfung beschrieben.
Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Informationen zum Ändern dieses Verhaltens finden Sie im Global state in the CRT.
Anforderungen
Routine | Erforderlicher Header | Optionaler Header |
---|---|---|
_chsize |
<io.h> | <errno.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
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 );
}
}
File length before: 0
Size successfully changed
File length after: 329678
Siehe auch
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für