_write
ファイルにデータを書き込みます。
int _write(
int fd,
const void *buffer,
unsigned int count
);
パラメーター
fd
データを書き込むファイルのファイル記述子。buffer
書き込むデータ。count
バイト数。
戻り値
成功すると_write は実際に書き込まれたバイト数を返します。バッファーのサイズが関数ディスクに書き込むことを示す未満である実際のディスク領域が _write 場合はディスクへのバッファーの内容は失敗しフラッシュしません。1 を返しエラーを示します。無効なパラメーターが渡されるとこの関数は パラメーターの検証 に説明されているように無効なパラメーター ハンドラーを呼び出します。実行の継続が許可された場合関数の戻り値が 3 の値の 1 に設定されています : -1 と errnoEBADF の書き込みにファイル記述子を意味します。無効またはファイルが開きます ; ENOSPC の一つとして指定する操作のデバイスである十分な領域ではありません ; または buffer が null ポインターであることを EINVAL ため意味します。
これらの詳細については_doserrnoerrno_sys_errlist と _sys_nerr とそのほかのリターン コード " " を参照してください。
ファイルがテキスト モードで開くと各改行文字が出力の復帰と改行の組み合わせに置き換えられます。コントロールは戻り値に影響しません。
解説
_write の関数は fd に関連付けられたファイルに buffer から count のバイトを書き込みます。書き込み操作が指定されたファイルに関連付けられているファイル ポインターの現在位置から開始されます (存在する場合)。ファイルが追加で開いている場合操作はファイルの現在の末尾から始まります。書き込み操作するとファイル ポインターは実際に書き込まれたバイト数だけ増やします。
ファイルへの書き込みがテキスト モードで開いたときに_write は論理的な EOF が見つかりました。として Ctrl キーの文字を処理します。デバイスに記述する場合は_write 出力バッファーの終端記号として Ctrl キーの文字を処理します。
必要条件
ルーチン |
必須ヘッダー |
---|---|
_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 );
}