_read

ファイルからデータを読み取ります。

構文

int _read(
   int const fd,
   void * const buffer,
   unsigned const buffer_size
);

パラメーター

fd
開いているファイルを参照するファイル記述子。

buffer
データの格納場所。

buffer_size
読み取る最大バイト数。

戻り値

_read では読み取りバイト数を返します。ファイル内にあるのが残り buffer_size バイト未満であるか、ファイルがテキスト モードで開かれている場合、これは buffer_size より小さいことがあります。 テキスト モードでは、復帰と改行のペア \r\n は、それぞれ 1 つの改行文字 \n に置き換えられます。 戻り値ではその単一の改行文字だけがカウントされます。 置換はファイル ポインターに影響しません。

この関数はファイルの終わりで読み取りをすると、0 を返します。 有効でない場合、ファイルが読み取り用に開いていない場合、またはファイルがロックされている場合fdは、「パラメーターの検証」の説明に従って無効なパラメーター ハンドラーが呼び出されます。 実行の継続が許可された場合、この関数は -1 を返し、 errnoEBADFに設定します。

bufferNULL である場合、または buffer_size>INT_MAX の場合、無効なパラメーター ハンドラーが呼び出されます。 実行の継続が許可された場合、この関数は -1 を返し、errnoEINVAL に設定されます。

このリターン コードやその他のリターン コードの詳細については、「errno_doserrno_sys_errlist、および _sys_nerr」を参照してください。

解説

_read 関数は buffer_size の最大バイトを、fd に関連付けられているファイルから buffer に読み込みます。 読み取り操作は、指定されたファイルに関連付けられたファイル ポインターの現在の位置で開始されます。 読み取り操作後、ファイル ポインターは、次の未読の文字を指します。

ファイルがテキスト モードで開かれた場合、ファイルの終わりを示すインジケーターとして扱われる CTRL + Z の文字が _read で検出された時点で、読み取りは終了します。 ファイルの終わりのインジケーターをクリアするには、_lseek を使用します。

既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT のグローバル状態」を参照してください

必要条件

ルーチンによって返される値 必須ヘッダー
_read <io.h>

互換性の詳細については、「 Compatibility」を参照してください。

ライブラリ

C ランタイム ライブラリのすべてのバージョン。

// crt_read.c
/* This program opens a file named crt_read.txt
* and tries to read 60,000 bytes from
* that file using _read. It then displays the
* actual number of bytes read.
*/

#include <fcntl.h>      /* Needed only for _O_RDWR definition */
#include <io.h>
#include <stdlib.h>
#include <stdio.h>
#include <share.h>

char buffer[60000];

int main( void )
{
   int fh, bytesread;
   unsigned int nbytes = 60000;

   /* Open file for input: */
   if ( _sopen_s( &fh, "crt_read.txt", _O_RDONLY, _SH_DENYNO, 0 ))
   {
      perror( "open failed on input file" );
      exit( 1 );
   }

   /* Read in input: */
   if (( bytesread = _read( fh, buffer, nbytes )) <= 0 )
      perror( "Problem reading file" );
   else
      printf( "Read %u bytes from file\n", bytesread );

   _close( fh );
}

入力: crt_read.txt

Line one.
Line two.

出力

Read 19 bytes from file

関連項目

低レベル I/O
_creat, _wcreat
fread
_open, _wopen
_write