共用方式為


_chsize

改變檔案大小。 更多可用更安全版本,請參閱_chsize_s

int _chsize( 
   int fd,
   long size 
);

參數

  • fd
    參考開啟檔案的檔案描述項。

  • size
    新檔案的長度,以位元組為單位。

傳回值

如果成功變更檔案大小,_chsize會傳回值 0。 傳回值-1表示錯誤: 如果指定的檔案鎖定物件的存取,errno設定 EACCES,如果指定的檔案是唯讀或描述項無效,如果裝置沒有多餘空間或EINVAL,則為 EBADF,如果size小於零,則為 ENOSPC。

如需有關這些回傳碼和其他回傳碼的詳細資訊,請參閱 _doserrno、errno、_sys_errlist 和 _sys_nerr

備註

_chsize函式擴充或截斷與 fd 相關聯之檔案至 size的指定長度。 檔案必須開啟允許寫入模式。 如果檔案已擴充,附加 null 字元 ('\0')。 如果檔案已截斷,從縮短的檔案結尾至檔案的原始長度的任何資料將遺失。

這個函式會驗證它的參數。 如果 size 小於零或 fd 是錯誤的檔案描述項,無效的參數叫用處理常式,如 參數驗證中所述。

需求

常式

必要的標頭

選擇性標頭

_chsize

<io.h>

<errno.h>

如需更多關於相容性的資訊,請參閱入門介紹中的 相容性 (Compatibility)

範例

// 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 );
   }
}
  

.NET Framework 對等用法

請參閱

參考

檔案處理

_close

_sopen、_wsopen

_open、_wopen