_chsize

ファイル サイズを変更します。 より安全なバージョンが利用可能です。を参照してください _chsize_s

構文

int _chsize(
   int fd,
   long size
);

パラメーター

fd
開いているファイルを参照するファイル記述子。

size
バイト単位のファイルの新しい長さ。

戻り値

ファイル サイズが正常に変更された場合は、_chsize は値 0 を返します。 戻り値 -1 は、エラーerrnoを示します。指定したファイルが読み取り専用であるか、指定されたファイルがアクセスに対してロックされている場合、EBADF記述子が無効な場合、デバイスにスペースが残っていない場合、ENOSPCまたはEINVALゼロ未満の場合sizeに設定EACCESされます。

リターン コードの詳細については、「errno_doserrno_sys_errlist、および _sys_nerr」を参照してください。

解説

_chsize 関数は、fd に関連付けられているファイルを size に指定された長さに拡張するか切り捨てます。 ファイルは、書き込みを許可するモードで開かれている必要があります。 ファイルが拡張される場合は、null 文字 ('\0') が追加されます。 ファイルが切り捨てられる場合、短くなったファイルの末尾からファイルの元の長さまでのすべてのデータは失われます。

この関数は、パラメーターを検証します。 0 未満の場合、またはfdファイル記述子が正しくない場合sizeは、「パラメーターの検証」で説明されているように、無効なパラメーター ハンドラーが呼び出されます。

既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT のグローバル状態」を参照してください

必要条件

ルーチンによって返される値 必須ヘッダー オプション ヘッダー
_chsize <io.h> <errno.h>

互換性の詳細については、「 Compatibility」を参照してください。

// 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