Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье
Изменяет размер файла. Доступна более безопасная версия; см. раздел _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