_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 \n
riga. 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
è NULL
o 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_errlist
e _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