Freigeben über


_read

Liest Daten aus einer Datei.

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

Parameter

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

  • Puffer
    Speicherort für Daten.

  • Anzahl
    Maximale Anzahl von Bytes.

Rückgabewert

_Lesen gibt die Anzahl der gelesenen Bytes zurück, die möglicherweise kleiner als zählen sein, wenn er kleiner als die Zählbytes gibt, die in der Datei beibehalten werden, oder wenn die Datei im Textmodus geöffnet wurde. In diesem Fall wird jedes Paar von Wagenrücklauf-Zeilenvorschubs (CR-LF) durch ein einzelnes Zeilenvorschubzeichen ersetzt wird.Nur das einzelne Zeilenvorschubzeichen wird im Rückgabewert gezählt.Die Ersetzung wirkt sich nicht auf den Dateizeiger.

Wenn die Funktion versucht, auf Dateiende zu lesen, gibt sie 0 zurück.Wenn fd ungültig ist, wird die Datei nicht zum Lesen geöffnet werden, oder die Datei wurde der ungültige Parameter für gesperrt wird aufgerufen, wie in Parametervalidierungbeschrieben.Wenn die Ausführung zulässig ist, um fortzufahren, kehrt die Funktion 1 zurück EBADFzu errno und legt ihn fest.

Wenn PufferNULLungültige Parameter ist, wird der Ereignishandler aufgerufen.Wenn die Ausführung ermöglicht wird, um fortzufahren, gibt die Funktion -1 zurück. errno wird auf EINVALfestgelegt.

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

Hinweise

Die Funktion liest _read maximal Zählbytes im Puffer aus der Datei, die fdzugeordnet ist.Der Lesevorgang beginnt dabei an der aktuellen Position des Dateizeigers, der der angegebenen Datei zugeordnet ist.Nach dem Lesevorgang verweist der Dateizeiger zum nächsten ungelesenen Zeichen.

Wenn die Datei im Textmodus geöffnet wurde, wird das Lesen _read , wenn ein STRG+Z-Zeichen trifft, das als Dateiende-Indikator behandelt wird.Verwendung _lseek , den Dateiende-Indikator zu löschen.

Anforderungen

Routine

Erforderlicher Header

_read

<io.h>

Weitere Informationen finden Sie unter Kompatibilität Kompatibilität in der Einführung.

Bibliotheken

Alle Versionen Cs.

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

Eingabe: crt_read.txt

Line one.
Line two.

Output

Read 19 bytes from file

Siehe auch

Referenz

E/A auf niedriger Ebene

_create, _wcreat

fread

_open, _wopen

_write