_read
Odczytuje dane z pliku.
int _read(
int fd,
void *buffer,
unsigned int count
);
Parametry
fd
Plik deskryptora odnoszące się do otwartego pliku.bufor
Miejsca przechowywania danych.Licznik
Maksymalna liczba bajtów.
Wartość zwracana
_odczytać zwraca liczbę bajtów odczytanych, która może być mniejsza niż Licznik , jeżeli jest mniej niż liczba bajtów pozostawione w pliku lub jeśli plik został otwarty w trybie tekstowym, w którym to przypadku każdego przewozu return–line paszy pary (CR LF) zastępuje znak wysuwu wiersza jednej.Tylko znak wysuwu wiersza jednej jest liczony w wartości zwracanej.Zastąpienie nie wpływa na wskaźnik pliku.
Jeśli funkcja próbuje odczytać na koniec pliku, zwraca wartość 0.Jeśli fd jest nieprawidłowy, plik nie jest otwarty do odczytu, lub plik jest zablokowany, wywoływana jest funkcja obsługi nieprawidłowy parametr, jak opisano w Sprawdzanie poprawności parametru.Jeśli wykonanie jest dozwolone, aby kontynuować, funkcja zwraca –1 i zestawy errno do EBADF.
Jeśli buforu jest NULL, wywoływana jest funkcja obsługi nieprawidłowy parametr.Jeśli wykonanie może w dalszym ciągu, funkcja zwraca wartość -1 i errno jest ustawiona na EINVAL.
Aby uzyskać więcej informacji na temat tego i innych kodów powrotu, zobacz _doserrno, errno, _sys_errlist i _sys_nerr.
Uwagi
_read Funkcji odczytuje maksymalnie liczba bajtów do buforu z pliku skojarzonego z fd.Operacja odczytu rozpoczyna się w bieżącym położeniu wskaźnika pliku skojarzonego z danym plikiem.Po zakończeniu operacji odczytu wskaźnika pliku punktów do następnego znaku nieprzeczytane.
Jeśli plik został otwarty w trybie tekstowym, read kończy, gdy _read napotka znaku CTRL + Z, który jest traktowany jako wskaźnik końca pliku.Użyj _lseek wyczyść wskaźnik końca pliku.
Wymagania
Rozpoczęto wykonywanie procedury |
Wymaganego nagłówka |
---|---|
_read |
<io.h> |
Informacji dotyczących zgodności, zobacz zgodności we wprowadzeniu.
Biblioteki
Wszystkie wersje biblioteki uruchomieniowej c.
Przykład
// 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 );
}
Dane wejściowe: crt_read.txt
Line one.
Line two.
Dane wyjściowe
Read 19 bytes from file