_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 \n
ersetzt. 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 EBADF
ein.
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_errlist
und _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