_chsize
更改文件的大小。 一种较为安全的版本可用; _chsize_s参见。
int _chsize(
int fd,
long size
);
参数
fd
引用打开文件的描述符。size
文件的新字节长度。
返回值
,如果成功更改,_chsize 返回值 0 文件大小。 返回值 – 1 表示错误: errno 设置为 EACCES ,如果指定的文件锁定的访问,对 EBADF ,如果指定的文件只读或说明符无效, ENOSPC ,如果空间在计算机不留下,或者 EINVAL ,如果 size 小于零。
请参见 _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 );
}
}