_chsize
更新 : 2007 年 11 月
ファイルのサイズを変更します。セキュリティが強化されたバージョンを使用できるようになりました。「_chsize_s」を参照してください。
int _chsize(
int fd,
long size
);
パラメータ
fd
開いているファイルを参照するファイル記述子。size
ファイルの新しい長さ (バイト単位)。
戻り値
ファイル サイズが正常に変更された場合、_chsize は 0 という値を返します。戻り値 –1 はエラーを意味します。このとき、errno は、指定されたファイルがアクセスに対してロックされている場合は EACCES に設定されます。指定されたファイルが読み取り専用か、記述子が無効な場合は EBADF に設定されます。デバイスに領域がない場合は ENOSPC に設定されます。size が 0 より小さい場合は EINVAL に設定されます。
戻り値の詳細については、「_doserrno、errno、_sys_errlist、および _sys_nerr」を参照してください。
解説
_chsize 関数は、fd に関連付けられたファイルの拡張または切り捨てを実行し、size で指定された長さにファイル サイズを変更します。ファイルは書き込み許可モードで開く必要があります。ファイルが拡張された場合は、Null 文字 ('\0') が追加されます。ファイルが切り捨てられた場合は、切り捨て後のファイルの終端から元のファイル長までに含まれていたデータがすべて失われます。
この関数は、パラメータを検証します。size が 0 より小さい場合または fd が無効なファイル記述子の場合は、「パラメータの検証」に説明されているように、無効なパラメータ ハンドラが呼び出されます。
必要条件
ルーチン |
必須ヘッダー |
オプション ヘッダー |
---|---|---|
_chsize |
<io.h> |
<errno.h> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
使用例
// 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