Compartir a través de


_read

Lee datos de un archivo.

int _read( 
   int fd, 
   void *buffer, 
   unsigned int count  
);

Parámetros

  • fd
    Descriptor de archivo que hace referencia al archivo abierto.

  • buffer
    Ubicación de almacenamiento de los datos.

  • count
    Número de bytes máximo.

Valor devuelto

_read devuelve el número de bytes leídos, que puede ser menor que cuenta si hay menos que los bytes que quedan en el archivo o si el archivo se abre en modo de texto, en cuyo caso cada par de fuentes de la retorno- línea de carro (CR-LF) se reemplaza por un único carácter de avance de línea. Sólo el único carácter de avance de línea se cuenta en el valor devuelto. El reemplazo no afecta al puntero de archivo.

Si la función intenta leer al final del archivo, devuelve 0. Si fd no es válido, el archivo no está abierto para lectura, o el archivo está bloqueado, el controlador no válido de parámetro se invoca, como se describe en Validación de parámetros. Si la ejecución puede continuar, la función devuelve – 1 y establece errno a EBADF.

Si el búfer es nulo, se invoca el controlador no válido del parámetro. Si la ejecución puede continuar, la función devuelve -1 y errno se establece en EINVAL.

Para obtener más información sobre estos y otros códigos de retorno, vea _doserrno, errno, _sys_errlist, y _sys_nerr.

Comentarios

La función de _read lee un número máximo de bytes del recuento en el búfer de archivo asociado a fd. La operación de lectura comienza en la posición actual del puntero de archivo asociado al archivo especificado. Después de la operación de lectura, los puntos de ese puntero al carácter no leídos siguiente.

Si el archivo se abre en modo de texto, lectura finaliza cuando _read encuentra un carácter de CTRL+Z, que se trata como un mensaje de fin de archivo. Uso _lseek de borrar la marca de fin de archivo.

Requisitos

Rutina

Encabezado necesario

_read

<io.h>

Para obtener más información de compatibilidad, vea Compatibilidad en la Introducción.

Bibliotecas

Todas las versiones de las bibliotecas en tiempo de ejecución de C.

Ejemplo

// 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;
   unsigned int nbytes = 60000, bytesread;

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

Entrada: crt_read.txt

Line one.
Line two.

Resultados

Read 19 bytes from file

Vea también

Referencia

E/S de bajo nivel

_creat, _wcreat

fread

_open, _wopen

_write