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

.NET Framework 等效项

请参见

参考

文件处理

_close

_sopen、_wsopen

_open、_wopen