_read
Liest Daten aus einer Datei.
int _read(
int fd,
void *buffer,
unsigned int count
);
Parameter
fd
Dateideskriptor, der die geöffnete Datei verweist.buffer
Speicherort für Daten.count
Maximale Anzahl Bytes.
Rückgabewert
_Lesen gibt die Anzahl der gelesenen Bytes zurück, die möglicherweise kleiner als zählen ist, wenn weniger als die Zählbytes gibt, die in der Datei verbleiben, oder wenn die Datei im Textmodus geöffnet war, in diesem Fall jedes Paar des Wagenrücklauf-Zeilenvorschubs (CR-LF) durch ein einzelnes Zeilenvorschubzeichen ersetzt wird. Nur das einzelne Zeilenvorschubzeichen wird im Rückgabewert gezählt. Die Ersetzung nicht beeinflusst der Dateizeiger.
Wenn versucht, die Funktion am Dateiende gelesen, gibt sie 0 zurück. Wenn fd NULL ist, ist die Datei nicht zum Lesen geöffnet, oder die Datei wird, der ungültige Parameterhandler gesperrt wird aufgerufen, wie in Parametervalidierung beschrieben. Wenn die Ausführung zulässig ist, um fortzufahren, kehrt die Feature - 1 zurück und legt errno auf EBADF fest.
Wenn PufferNULL, wird der ungültige Parameterhandler aufgerufen. Wenn die Ausführung zulässig ist, um fortzufahren, gibt die Funktion -1 zurück und errno ist auf EINVAL festgelegt.
Weitere Informationen über diese und andere Rückgabecodes, finden Sie unter _doserrno, errno, _sys_errlist und _sys_nerr.
Hinweise
Die _read-Funktion liest maximal in Zählbytes Puffer aus der Datei, die fd zugeordnet ist. Der Lesevorgang beginnt in der aktuellen Position des Dateizeigers, der der angegebenen Datei zugeordnet ist. Nach den Lesevorgang zeigt der Dateizeiger beim folgenden ungelesenen Zeichen.
Wenn die Datei im Textmodus geöffnet war, wird das Lesen, wenn _read ein STRG+Z-Zeichen trifft, das als Dateiende-Indikator behandelt wird. Verwenden Sie _lseek, den Dateiende-Indikator zu löschen.
Anforderungen
Routine |
Erforderlicher Header |
---|---|
_read |
<io.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität in der Einführung.
Bibliotheken
Alle Versionen 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;
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.
Ausgabe
Read 19 bytes from file