Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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