read(C++)
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++ |
---|---|---|---|
+ |
+ |