_chsize
更改文件的大小。 一种较为安全有效的版本;请参见_chsize_s。
int _chsize(
int fd,
long size
);
参数
fd
引用开启文件的描述符。size
文件的新长度(以字节为单位)。
返回值
如果更改成功,文件大小,_chsize返回值 0。 返回 -1 指示错误:如果指定的文件锁定访问,errno为EACCES,如果指定的文件改为只读或说明符无效,为EBADF,如果设备没有留出空间,为ENOSPC,或如果 size 小于零,为EINVAL。
有关这些内容的详细信息以及其他返回代码,请参见 _doserrno、errno、_sys_errlist 和 _sys_nerr。
备注
_chsize函数扩展或截断文件与 fd 为 size的指定长度。 文件绑定中打开允许写入的模式。 null 字符 (“\ 0 ") 追加,如果文件是扩展。 如果文件被截断,缩短从文件的结尾的所有数据。文件的原始长度的丢失。
此函数验证其参数。 如果 size 小于零或一个 fd 文件错误描述符,无效参数处理程序,如 参数验证所述。
要求
例程 |
必需的标头 |
可选标头 |
---|---|---|
_chsize |
<io.h> |
<errno.h> |
有关更多兼容性信息,请参见“简介”中的兼容性。
示例
// 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 );
}
}