Freigeben über


_read

Liest Daten aus einer Datei.

Syntax

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

Parameter

fd
Dateideskriptor, der auf die geöffnete Datei verweist.

buffer
Speicherort für Daten.

buffer_size
Maximale Anzahl der zu lesenden Bytes.

Rückgabewert

_read gibt die Anzahl der gelesenen Bytes zurück, die kleiner sein kann als buffer_size wenn in der Datei weniger Bytes buffer_size verbleiben, oder wenn die Datei im Textmodus geöffnet wurde. Im Textmodus wird jedes Wagenrücklaufzeilen-Einzugspaar \r\n durch ein einzelnes Zeilenvorschubzeichen \nersetzt. Nur das einzeilige Einzugszeichen wird im Rückgabewert gezählt. Der Ersatz wirkt sich nicht auf den Dateizeiger aus.

Wenn die Funktion versucht, am Ende der Datei zu lesen, wird 0 zurückgegeben. Wenn fd die Datei ungültig ist, ist die Datei nicht zum Lesen geöffnet, oder die Datei ist gesperrt, der ungültige Parameterhandler wird aufgerufen, wie in der Parameterüberprüfung beschrieben. Wenn die weitere Ausführung zugelassen wird, gibt die Funktion -1 zurück und stellt errno auf EBADFein.

Wenn der Parameterhandler aufgerufen wird oder wenn, wird der ungültige Parameterhandler aufgerufen.If buffer is NULL, or if buffer_size>INT_MAX, the invalid parameter handler is invoked. Wenn die weitere Ausführung zugelassen wird, gibt die Funktion -1 zurück und setzt errno auf EINVAL.

Weitere Informationen zu diesem und anderen Rückgabecodes finden Sie unter , , _doserrno, _sys_errlistund _sys_nerr.errno

Hinweise

Die _read Funktion liest maximal buffer_size Byte buffer aus der datei, die zugeordnet ist fd. Der Lesevorgang beginnt an der aktuellen Position des Dateizeigers für die betreffende Datei. Nach dem Lesevorgang zeigt der Dateizeiger auf das nächste ungelesene Zeichen.

Wenn die Datei im Textmodus geöffnet wurde, wird der Lesevorgang beendet, wenn _read ein STRG + Z-Zeichen findet, das als Dateiende-Indikator behandelt wird. Wird verwendet _lseek , um den End-of-File-Indikator zu löschen.

Standardmäßig gilt der globale Zustand dieser Funktion für die Anwendung. Wie Sie dieses Verhalten ändern, erfahren Sie unter Globaler Status in der CRT.

Anforderungen

Routine Erforderlicher Header
_read <io.h>

Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.

Libraries

Alle Versionen der C-Laufzeitbibliotheken.

Beispiel

// 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 );
}

Eingabe: crt_read.txt

Line one.
Line two.

Output

Read 19 bytes from file

Siehe auch

E/A auf niedriger Ebene
_creat, _wcreat
fread
_open, _wopen
_write