Share via


_read

更新 : 2007 年 11 月

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

int _read(
   int fd,
   void *buffer,
   unsigned int count 
);

パラメータ

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

  • buffer
    データの格納場所

  • count
    最大バイト数

戻り値

_read は、実際に読み取ったバイト数を返します。ファイル内に残っているバイト数が count より少ない場合またはファイルがテキスト モードで開かれている場合は、このバイト数が count より少なくなることがあります。この場合、復帰と改行 (CR-LF: Carriage Return-Linefeed) の各組み合わせが 1 つの改行文字と置き換えられます。そのため、戻り値にはラインフィード文字 1 個分しかカウントされません。この置き換えはファイル ポインタには影響しません。

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

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

リターン コードの詳細については、「_doserrno、errno、_sys_errlist、および _sys_nerr」を参照してください。

解説

_read 関数は、fd に関連付けられているファイルから、count に指定した最大バイト数を読み取り、buffer に格納します。読み取り操作は、指定したファイルに関連付けられているファイル ポインタの現在位置から開始します。読み取り操作が終わると、ファイル ポインタは次に読み取る文字を指します。

ファイルをテキスト モードで開いている場合、Ctrl + Z 文字が現れたところで読み取りが終了します。この文字は EOF (EOF: end-of-file) インジケータとして処理されます。EOF (EOF: end-of-file) インジケータをクリアするには、_lseek 関数を使用します。

必要条件

ルーチン

必須ヘッダー

_read

<io.h>

互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。

ライブラリ

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;
   unsigned int nbytes = 60000, bytesread;

   /* 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

参照

参照

下位入出力

_creat、_wcreat

fread

_open、_wopen

_write