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


_chsize

Изменяет размер файла. Доступна более безопасная версия; см. раздел _chsize_s.

Синтаксис

int _chsize(
   int fd,
   long size
);

Параметры

fd
Дескриптор файла, ссылающийся на открытый файл.

size
Новая длина файла в байтах.

Возвращаемое значение

_chsize возвращает значение 0, если размер файла успешно изменен. Возвращаемое значение -1 указывает на ошибку: errno задано EACCES значение, если указанный файл доступен только для чтения или указанный файл заблокирован для доступа, если EBADF дескриптор недопустим, если на устройстве нет места или ENOSPCEINVALsize меньше нуля.

Дополнительные сведения о кодах возврата см. в разделе errno, _doserrno_sys_errlistи _sys_nerr.

Замечания

Функция _chsize расширяет или усекает файл, связанный с fd, до длины, указанной size. Файл должен быть открыт в режиме, позволяющем выполнять запись. Если файл доступен для расширения, к нему добавляются нули ('\0'). Если файл усекается, все данные в конце сокращенного файла усекаются до длины исходного файла.

Эта функция проверяет свои параметры. Если size дескриптор файла меньше нуля или fd является недопустимым дескриптором файла, вызывается обработчик недопустимых параметров, как описано в разделе проверки параметров.

По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.

Требования

Маршрут Обязательный заголовок Необязательный заголовок
_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 );
   }
}
File length before: 0
Size successfully changed
File length after:  329678

См. также

Обработка файлов
_close
_sopen, _wsopen
_open, _wopen