_read
Lit les données d’un fichier.
Syntaxe
int _read(
int const fd,
void * const buffer,
unsigned const buffer_size
);
Paramètres
fd
Descripteur de fichier qui fait référence au fichier ouvert.
buffer
Emplacement de stockage des données.
buffer_size
Nombre maximal d’octets à lire.
Valeur retournée
_read
renvoie le nombre d’octets lus, qui peuvent être inférieurs buffer_size
à s’il y a moins buffer_size
d’octets laissés dans le fichier, ou si le fichier a été ouvert en mode texte. En mode texte, chaque paire \r\n
de sauts de ligne de retour chariot est remplacée par un seul caractère \n
de flux de ligne. Seul le caractère de flux de ligne unique est compté dans la valeur de retour. Le remplacement n’affecte pas le pointeur de fichier.
Si la fonction tente de lire à la fin du fichier, elle retourne 0. S’il fd
n’est pas valide, le fichier n’est pas ouvert pour la lecture ou le fichier est verrouillé, le gestionnaire de paramètres non valide est appelé, comme décrit dans la validation des paramètres. Si l'exécution est autorisée à se poursuivre, la fonction retourne -1 et définit errno
avec la valeur EBADF
.
Si buffer
c’est NULL
le cas ou si buffer_size
>INT_MAX
, le gestionnaire de paramètres non valide est appelé. Si l’exécution est autorisée à se poursuivre, la fonction retourne -1 et errno
est défini sur EINVAL
.
Pour plus d’informations sur ce code et d’autres codes de retour, consultez , , _sys_errlist
_doserrno
et _sys_nerr
.errno
Notes
La _read
fonction lit un maximum d’octets buffer_size
dans buffer
le fichier associé à fd
. L’opération de lecture commence à la position actuelle du pointeur de fichier associé au fichier donné. À la fin de la l’opération de lecture, le pointeur de fichier pointe vers le caractère non lu suivant.
Si le fichier a été ouvert en mode texte, la lecture se termine quand _read
rencontre un caractère CTRL+Z, qui est considéré comme un indicateur de fin de fichier. Permet _lseek
d’effacer l’indicateur de fin de fichier.
Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.
Spécifications
Routine | En-tête requis |
---|---|
_read |
<io.h> |
Pour plus d’informations sur la compatibilité, consultez Compatibility.
Bibliothèques
Toutes les versions des bibliothèques Runtime C.
Exemple
// 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 );
}
Entrée : crt_read.txt
Line one.
Line two.
Sortie
Read 19 bytes from file
Voir aussi
E/S de bas niveau
_creat
, _wcreat
fread
_open
, _wopen
_write