_chsize
Mengubah ukuran file. Versi yang lebih aman tersedia; lihat _chsize_s
.
Sintaks
int _chsize(
int fd,
long size
);
Parameter
fd
Pendeskripsi file yang mengacu pada file yang terbuka.
size
Panjang baru file dalam byte.
Nilai hasil
_chsize
mengembalikan nilai 0 jika ukuran file berhasil diubah. Nilai pengembalian -1 menunjukkan kesalahan: errno
diatur ke EACCES
jika file yang ditentukan bersifat baca-saja atau file yang ditentukan dikunci terhadap akses, ke EBADF
jika deskriptor tidak valid, ENOSPC
jika tidak ada spasi yang tersisa di perangkat, atau EINVAL
jika size
kurang dari nol.
Untuk informasi selengkapnya tentang kode pengembalian, lihat errno
, , _doserrno
_sys_errlist
, dan _sys_nerr
.
Keterangan
Fungsi memperluas _chsize
atau memotong file yang terkait dengan fd
panjang yang ditentukan oleh size
. File harus terbuka dalam mode yang mengizinkan penulisan. Karakter null ('\0') ditambahkan jika file diperluas. Jika file dipotong, semua data dari akhir file yang dipersingkat ke panjang asli file akan hilang.
Fungsi ini memvalidasi parameternya. Jika size
kurang dari nol atau fd
merupakan deskriptor file yang buruk, handler parameter yang tidak valid dipanggil, seperti yang dijelaskan dalam Validasi parameter.
Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.
Persyaratan
Rutin | Header yang diperlukan | Header opsional |
---|---|---|
_chsize |
<io.h> | <errno.h> |
Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.
Contoh
// 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