_chsize
Změní velikost souboru. K dispozici je bezpečnější verze; viz ._chsize_s
Syntaxe
int _chsize(
int fd,
long size
);
Parametry
fd
Popisovač souboru odkazující na otevřený soubor.
size
Nová délka souboru v bajtech
Vrácená hodnota
_chsize
vrátí hodnotu 0, pokud je velikost souboru úspěšně změněna. Návratová hodnota -1 značí chybu: errno
je nastavena EACCES
, pokud je zadaný soubor jen pro čtení nebo je zadaný soubor uzamčen proti přístupu, pokud EBADF
je popisovač neplatný, ENOSPC
pokud není v zařízení ponecháno žádné místo nebo EINVAL
pokud size
je menší než nula.
Další informace o návratových kódech naleznete v tématu errno
, _doserrno
, _sys_errlist
a _sys_nerr
.
Poznámky
Funkce _chsize
rozšiřuje nebo zkracuje soubor přidružený fd
k délce určené .size
Soubor musí být otevřený v režimu, který umožňuje zápis. Pokud je soubor rozšířený, připojují se znaky null (\0). Pokud je soubor zkrácený, všechna data z konce zkráceného souboru na původní délku souboru se ztratí.
Tato funkce ověří své parametry. Pokud size
je menší než nula nebo fd
je chybný popisovač souboru, vyvolá se neplatná obslužná rutina parametru, jak je popsáno v ověření parametru.
Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.
Požadavky
Rutina | Požadovaný hlavičkový soubor | Volitelné záhlaví |
---|---|---|
_chsize |
<io.h> | <errno.h> |
Další informace o kompatibilitě najdete v tématu Kompatibilita.
Příklad
// 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