_read
Odczytuje dane z pliku.
Składnia
int _read(
int const fd,
void * const buffer,
unsigned const buffer_size
);
Parametry
fd
Deskryptor plików odwołujący się do otwartego pliku.
buffer
Lokalizacja przechowywania danych.
buffer_size
Maksymalna liczba bajtów do odczytania.
Wartość zwracana
_read
Zwraca liczbę odczytanych bajtów, która może być mniejsza niż buffer_size
w przypadku, gdy w pliku pozostało mniej niż buffer_size
bajty lub jeśli plik został otwarty w trybie tekstowym. W trybie tekstowym każda para \r\n
kanału powrotnego karetki jest zastępowana znakiem pojedynczego wiersza.\n
Tylko pojedynczy znak kanału informacyjnego jest liczone w wartości zwracanej. Zamiana nie ma wpływu na wskaźnik pliku.
Jeśli funkcja próbuje odczytać na końcu pliku, zwraca wartość 0. Jeśli fd
plik nie jest prawidłowy, nie jest otwarty do odczytu lub plik jest zablokowany, wywoływana jest nieprawidłowa procedura obsługi parametrów, zgodnie z opisem w temacie Walidacja parametrów. Jeśli wykonywanie jest dozwolone do kontynuowania, funkcja zwraca wartość -1 i ustawia wartość errno
EBADF
.
Jeśli buffer
parametr to NULL
, lub buffer_size
>INT_MAX
, wywoływana jest nieprawidłowa procedura obsługi parametrów. Jeśli wykonywanie jest dozwolone do kontynuowania, funkcja zwraca wartość -1 i errno
jest ustawiona na EINVAL
wartość .
Aby uzyskać więcej informacji na temat tych i innych kodów powrotnych, zobacz errno
, _doserrno
, _sys_errlist
i _sys_nerr
.
Uwagi
Funkcja _read
odczytuje maksymalnie bajty buffer_size
buffer
z pliku skojarzonego z fd
programem . Operacja odczytu rozpoczyna się od bieżącej pozycji wskaźnika pliku skojarzonego z danym plikiem. Po operacji odczytu wskaźnik pliku wskazuje następny nieprzeczytany znak.
Jeśli plik został otwarty w trybie tekstowym, odczyt kończy się po _read
napotkaniu znaku CTRL+Z, który jest traktowany jako wskaźnik końca pliku. Użyj _lseek
polecenia , aby wyczyścić wskaźnik końca pliku.
Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.
Wymagania
Procedura | Wymagany nagłówek |
---|---|
_read |
<io.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Biblioteki
Wszystkie wersje bibliotek czasu wykonywania języka 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, 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 );
}
Dane wejściowe: crt_read.txt
Line one.
Line two.
Wynik
Read 19 bytes from file
Zobacz też
We/Wy niskiego poziomu
_creat
, _wcreat
fread
_open
, _wopen
_write