_read

Legge i dati da un file.

Sintassi

int _read(
   int const fd,
   void * const buffer,
   unsigned const buffer_size
);

Parametri

fd
Il descrittore del file che fa riferimento al file aperto.

buffer
Percorso di archiviazione per i dati.

buffer_size
Numero massimo di byte da leggere.

Valore restituito

_read restituisce il numero di byte letti, che potrebbero essere minori di buffer_size se nel file sono rimasti meno di buffer_size byte oppure se il file è stato aperto in modalità testo. In modalità testo, ogni coppia \r\n di avanzamento ritorno a capo viene sostituita con un singolo carattere di avanzamento \nriga. Solo il carattere di avanzamento riga singolo viene conteggiato nel valore restituito. La sostituzione non influisce sul puntatore al file.

Se la funzione tenta di leggere alla fine del file, restituisce 0. Se fd non è valido, il file non è aperto per la lettura o il file è bloccato, viene richiamato il gestore di parametri non validi, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, la funzione restituisce -1 e imposta errno su EBADF.

Se buffer è NULLo se buffer_size>INT_MAX, viene richiamato il gestore di parametri non validi. Se l'esecuzione può continuare, la funzione restituisce -1 ed errno viene impostato su EINVAL.

Per altre informazioni su questo e altri codici restituiti, vedere errno, _doserrno, _sys_errliste _sys_nerr.

Osservazioni:

La _read funzione legge un massimo di buffer_size byte nel buffer file associato a fd. L'operazione di lettura inizia dalla posizione corrente del puntatore del file associato al file specificato. Dopo l'operazione di lettura, il puntatore del file punta al carattere successivo non letto.

Se il file è stato aperto in modalità testo, la lettura termina quando _read rileva un carattere CTRL + Z, che viene considerato come un indicatore di fine del file. Usare _lseek per cancellare l'indicatore di fine del file.

Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificare questo comportamento, vedere Stato globale in CRT.

Requisiti

Ciclo Intestazione obbligatoria
_read <io.h>

Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).

Librerie

Tutte le versioni delle librerie di runtime C.

Esempio

// 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 );
}

Input: crt_read.txt

Line one.
Line two.

Output

Read 19 bytes from file

Vedi anche

I/O di basso livello
_creat, _wcreat
fread
_open, _wopen
_write