Udostępnij za pośrednictwem


_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 EINVALwartość .

Aby uzyskać więcej informacji na temat tych i innych kodów powrotnych, zobacz errno, _doserrno, _sys_errlisti _sys_nerr.

Uwagi

Funkcja _read odczytuje maksymalnie bajty buffer_size buffer z pliku skojarzonego z fdprogramem . 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