Bagikan melalui


_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

Baca juga

Penanganan file
_close
_sopen, _wsopen
_open, _wopen