_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 \nde 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 NULLle 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_doserrnoet _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