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++ |
|---|---|---|---|
|
+ |
+ |