read(C++)

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

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


ヘッダー ファイル

io.h

カテゴリ

入出力ルーチン

プロトタイプ

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

説明

ファイルから読み取ります。

read は handle に関連付けられたファイルから len バイトを読み取り、buf が指すバッファへの格納を試みます。

ファイルがテキスト モードで開かれている場合、復帰(CR)が削除され、Ctrl+Z に到達するとファイル終端(EOF)を報告します。

ファイル ハンドル handle は、creat、open、dup、または dup2 の呼び出しによって取得されます。

ディスク ファイルの場合、read は現在のファイル ポインタの位置から読み取りを開始します。読み取りが完了すると、読み取ったバイト数だけファイル ポインタをインクリメントします。デバイスの場合は、デバイスからバイトを直接読み取ります。

読み取ることができる最大バイト数は、UINT_MAX -1 です。これは、UINT_MAX が -1(エラーを示す戻り値)に等しいからです。UINT_MAX は limits.h で定義されています。

戻り値

正常に完了したときは、read はバッファ内に格納されたバイト数を示す整数を返します。ファイルがテキスト モードで開かれている場合、読み取るバイト数に復帰(CR)または Ctrl+Z 文字が含まれません。

ファイルの終端(EOF)では、read は 0 を返します。エラーが発生した場合は -1 を返し、グローバル変数に次のいずれかの値が設定されています。

EACCES

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

EBADF

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



#include <stdio.h>
#include <io.h>
#include <alloc.h>
#include <fcntl.h>
#include <process.h>
#include <sys\stat.h>
int main(void)
{
   void *buf;
   int handle, bytes;
   buf = malloc(10);
/*
Looks for a file in the current directory named TEST.$$$ and attempts to read 10 bytes from it. To use this example you should create the file TEST.$$$.
 */
   if ((handle =
      open("TEST.$$$", O_RDONLY | O_BINARY, S_IWRITE | S_IREAD)) == -1)
   {
      printf("Error Opening File\n");
      exit(1);
   }
   if ((bytes = read(handle, buf, 10)) == -1) {
      printf("Read Failed.\n");
      exit(1);
   }
   else {
      printf("Read: %d bytes read.\n", bytes);
   }
   return 0;
}

移植性

POSIX Win32 ANSI C ANSI C++

+

+