Ferramentas do usuário

Ferramentas do site


read

Função read

Sintaxe:

ssize_t read (int iFileDescriptor, void * buffer, size_t nbyte);


A função read realiza a leitura de dados do arquivo para a memória. Deve-se informar de qual descritor devem ser lidos os bytes. O descritor deve estar aberto com opção O_RDONLY ou O_RDWR. Os dados serão lidos a partir da posição corrente.

Deve-se informar o endereço onde a informação lida será armazenada. Também se informa para a função a quantidade de bytes que devem ser lidos do arquivo. É responsabilidade do programador reservar o espaço necessário para que a função não invada memória.

A função irá retornar a quantidade de bytes realmente lidos do arquivo. Caso ocorra algum erro na leitura do arquivo a função irá retornar -1 indicando erro. A descrição do erro estará disponível na variável errno.

Veja o exemplo:

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <limits.h>
#include <fcntl.h>
 
int main(int argc, char  *argv[])
{
   int iFileDescriptor;
 
   /* A constante _POSIX_PATH_MAX] indica o tamanho (de caracteres incluindo diretórios e subdiretórios) que um arquivo pode possuir.
           Esta definido no arquivo limits.h */
   char sNome [_POSIX_PATH_MAX];
   ssize_t iQtdeLida;
   char aBuffer[100];
 
   printf ("Entre com o nome do arquivo : ");
   gets (sNome);
 
   iFileDescriptor = open (sNome, O_RDONLY);
   if (iFileDescriptor < 0)
   {
      perror (argv[0]);
      exit (errno);
   }
   printf ("Arquivo '%s' aberto\n", sNome);
 
   printf("\nTentando ler 100 bytes do arquivo indicado\n");
 
   /* deve-se passar sempre o endereço de memória da variável que vai receber os bytes lidos */
   iQtdeLida = read (iFileDescriptor, &aBuffer, 100);
 
   if (iQtdeLida < 0)
   {
      perror (argv[0]);
      exit (errno);
   }
 
   printf("\nForam lidos %d bytes do arquivo '%s'\n", iQtdeLida, sNome);
   close (iFileDescriptor);
   return 0;
}

Marcos Laureano 2008/04/25 06:47

read.txt · Última modificação: 2023/09/12 16:14 por 127.0.0.1