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

.NET Framework 等效项

请参见

参考

文件处理

_close

_sopen, _wsopen

_open, _wopen