Поделиться через


_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. Файл должен быть открыт в режиме, который позволяет запись. В файл добавляются нуль-символы ('\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