write(C++)

提供: RAD Studio
移動先: 案内検索

io.h:インデックス への移動


ヘッダー ファイル

io.h

カテゴリ

入出力ルーチン

プロトタイプ

int write(int handle, void *buf, unsigned len);

説明

ファイルに書き込みます。

write は、指定したハンドルが示すファイルやデバイスに、バッファのデータを書き込みます。ファイル ハンドル handle は、creat、open、dup、または dup2 の呼び出しによって取得されます。

この関数は handle に関連付けられたファイルに、buf が指すバッファから len バイトの書き込みを試みます。テキスト ファイルへの書き込みに write を使用する場合を除き、ファイルに書き込まれるバイト数は、単に要求バイト数です。write が書き込むことができる最大バイト数は、UINT_MAX -1 です。これは、UINT_MAX が -1(エラーを示す戻り値)に等しいからです。テキスト ファイルの場合、write で改行(LF)文字を検出すると、CR/LF のペアを出力します。UINT_MAX は limits.h で定義されています。

実際に書き込まれたバイト数が要求値よりも小さい場合は、エラーの発生(ディスクに空き容量がないなど)を考える必要があります。ディスクやディスク ファイルの場合、現在のファイル ポインタの位置から常に書き込みを開始します。デバイスの場合は、デバイスにバイトが直接送信されます。O_APPEND オプション付きで開かれたファイルの場合は、ファイル ポインタが EOF に移動してから、write がデータを書き込みます。

戻り値

write は、書き込んだバイト数を返します。テキスト ファイルへの書き込みでは、生成された復帰(CR)はカウントされていません。エラーが発生した場合、write は -1 を返し、グローバル変数 errno に次のいずれかの値が設定されています。

EACCES

アクセスが拒否されました。

EBADF

ファイル番号が不正です。



#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys\stat.h>
#include <io.h>
#include <string.h>
int main(void)
{
   int handle;
   char string[40];
   int length, res;
/*
Create a file named "TEST.$$$" in the current directory and write a string to it.  If "TEST.$$$" already exists, it will be overwritten.
 */
   if ((handle = open("TEST.$$$", O_WRONLY | O_CREAT | O_TRUNC,
                         S_IREAD | S_IWRITE)) == -1)
   {
      printf("Error opening file.\n");
      exit(1);
   }
   strcpy(string, "Hello, world!\n");
   length = strlen(string);
   if ((res = write(handle, string, length)) != length)
   {
      printf("Error writing to the file.\n");
      exit(1);
   }
   printf("Wrote %d bytes to the file.\n", res);
   close(handle);
   return 0;
}

移植性

POSIX Win32 ANSI C ANSI C++

+

+