Ferramentas do usuário

Ferramentas do site


read
no way to compare when less than two revisions

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.


read [2023/09/12 16:14] (atual) – criada - edição externa 127.0.0.1
Linha 1: Linha 1:
 +====== Função read ======
 +
 +Sintaxe:
 +
 +''[[ssize_t]] read ([[tipos_dados|int]] iFileDescriptor, [[tipos_dados|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:
 +
 +<code c>
 +#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;
 +}
 +</code>
 +
 + --- //[[marcos@laureano.eti.br|Marcos Laureano]] 2008/04/25 06:47//
  
read.txt · Última modificação: 2023/09/12 16:14 por 127.0.0.1