Share via


_write

ファイルにデータを書き込みます。

int _write(
   int fd,
   const void *buffer,
   unsigned int count 
);

パラメーター

  • fd
    データを書き込むファイルのファイル記述子。

  • buffer
    書き込むデータ。

  • count
    バイト数。

戻り値

処理が正常に終了すると、_write 関数は実際に書き込まれたバイト数を返します。 ディスクの実際の空き容量が、ディスクに書き込むバッファーのサイズよりも小さい場合、_write 関数は失敗し、ディスクへの書き込みは行われません。 戻り値 -1 はエラーを意味します。 無効なパラメーターが渡される場合、「パラメーターの検証」に説明されているように、この関数は無効なパラメーター ハンドラーを呼び出します。 実行の継続が許可された場合は、-1 を返しますとerrno3 つの値のいずれかに設定されます。EBADF、は、ファイル記述子が無効ですまたは書く; は、ファイルが開かない ENOSPC、操作; のデバイスに十分な領域がないことを意味を左 またはEINVAL、つまり、buffernull ポインターだった。

戻り値の詳細については、「_doserrno、errno、_sys_errlist、および _sys_nerr」を参照してください。

ファイルがテキスト モードで開かれていると、各改行文字が、出力時に復帰と改行のペアで置き換えられます。 この置き換えは、戻り値には影響しません。

解説

_write 関数は、count のバイト数のデータを buffer から fd に関連付けられたファイルに書き込みます。 書き込み操作は、指定のファイルに関連付けられたファイル ポインターがある場合は、そのポインターの現在位置から開始します。 ファイルが追加のために開かれている場合は、現在のファイルの終端から開始します。 書き込み操作の後で、実際に書き込まれたバイト数だけ、ファイル ポインターが増分します。

テキスト モードで開かれているファイルに書き込む場合、_write 関数は Ctrl + Z 文字を論理的な EOF (EOF: end-of-file) と見なします。 デバイスに書き込む場合、_write 関数はバッファー内の Ctrl + Z 文字を出力の終端記号と見なします。

必要条件

ルーチン

必須ヘッダー

_write

<io.h>

互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。

使用例

// crt__write.c
// 
// This program opens a file for output and uses _write to write
// some bytes to the file.

#include <io.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
#include <share.h>

char buffer[] = "This is a test of '_write' function";

int main( void )
{
   int         fileHandle = 0;
   unsigned    bytesWritten = 0;

   if ( _sopen_s(&fileHandle, "write.o", _O_RDWR | _O_CREAT,
                  _SH_DENYNO, _S_IREAD | _S_IWRITE) )
      return -1;

   if (( bytesWritten = _write( fileHandle, buffer, sizeof( buffer ))) == -1 )
   {
      switch(errno)
      {
         case EBADF:
            perror("Bad file descriptor!");
            break;
         case ENOSPC:
            perror("No space left on device!");
            break;
         case EINVAL:
            perror("Invalid parameter: buffer was NULL!");
            break;
         default:
            // An unrelated error occured 
            perror("Unexpected error!");
      }
   }
   else
   {
      printf_s( "Wrote %u bytes to file.\n", bytesWritten );
   }
   _close( fileHandle );
}
  

参照

参照

下位入出力

fwrite

_open、_wopen

_read