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