_chsize
Изменяет размер файла. Доступна более безопасная версия; см. раздел _chsize_s
.
Синтаксис
int _chsize(
int fd,
long size
);
Параметры
fd
Дескриптор файла, ссылающийся на открытый файл.
size
Новая длина файла в байтах.
Возвращаемое значение
_chsize
возвращает значение 0, если размер файла успешно изменен. Возвращаемое значение -1 указывает на ошибку: errno
задано EACCES
значение, если указанный файл доступен только для чтения или указанный файл заблокирован для доступа, если EBADF
дескриптор недопустим, если на устройстве нет места или ENOSPC
EINVAL
size
меньше нуля.
Дополнительные сведения о кодах возврата см. в разделе 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