Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Zmienia rozmiar pliku. Dostępna jest bezpieczniejsza wersja; zobacz _chsize_s.
Składnia
int _chsize(
int fd,
long size
);
Parametry
fd
Deskryptor plików odwołujący się do otwartego pliku.
size
Nowa długość pliku w bajtach.
Wartość zwracana
_chsize Zwraca wartość 0, jeśli rozmiar pliku został pomyślnie zmieniony. Wartość zwracana -1 wskazuje błąd: errno jest ustawiony, EACCES jeśli określony plik jest tylko do odczytu lub określony plik jest zablokowany w stosunku do dostępu, jeśli EBADF deskryptor jest nieprawidłowy, ENOSPC jeśli na urządzeniu nie ma miejsca lub EINVAL jeśli size jest mniejszy niż zero.
Aby uzyskać więcej informacji na temat kodów zwracanych, zobacz errno, _doserrno, _sys_errlisti _sys_nerr.
Uwagi
Funkcja _chsize rozszerza lub obcina plik skojarzony z długością fd określoną przez size. Plik musi być otwarty w trybie, który zezwala na zapisywanie. Znaki null ('\0') są dołączane, jeśli plik został rozszerzony. Jeśli plik zostanie obcięty, wszystkie dane z końca skróconego pliku do oryginalnej długości pliku zostaną utracone.
Ta funkcja weryfikuje jego parametry. Jeśli size wartość jest mniejsza niż zero lub fd jest złym deskryptorem pliku, wywoływana jest nieprawidłowa procedura obsługi parametrów, zgodnie z opisem w temacie Weryfikacja parametrów.
Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.
Wymagania
| Procedura | Wymagany nagłówek | Opcjonalny nagłówek |
|---|---|---|
_chsize |
<io.h> | <errno.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Przykład
// 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