Leia a função na linguagem C

Leia a função na linguagem C

O idioma C possui duas funções básicas que permitem que você leia os arquivos usando as funções Read () e Fread (). Ele também possui métodos com funções para ler os arquivos personagem por caracteres.

É importante conhecer as funções de processamento de arquivos, seus métodos de chamada, argumentos de entrada e saída, etc., Para usá -los fluentemente porque eles são o recurso disponível para o programador para armazenar e descartar as informações armazenadas no sistema.

Neste artigo da dica do Linux, você aprenderá como usar a função read () para ler os arquivos.

Vamos explicar tudo sobre "ella", sua sintaxe, a chamada do método, os argumentos de entrada e saída, o tipo de dados que cada um deles aceita e como declará -los corretamente.

Em seguida, aplicamos o que aprendemos colocando o uso desse recurso em exemplos práticos.

Para que você esteja plenamente ciente de como usar a função read (), adicionamos uma seção especial que descreve todos os erros que podem ocorrer ao usar essa função, bem como sua detecção e identificação, para que você tenha o necessário técnicas para uma solução rápida em caso de erro.

Sintaxe da função read () na linguagem C

size_t leia (int fd, void *buf, size_t count);

Descrição da função read () na linguagem C

A função read () lê o conteúdo do arquivo aberto que é especificado por seu descritor no argumento de entrada "FD". Esta função lê e copia o número de contagem de bytes no buffer que é apontado por buf. O identificador "FD" é um número inteiro que é retornado como resultado da função Open () quando o arquivo é aberto.

Se a função read () retornar com sucesso, ele retornará o número de bytes lido. Um resultado igual a 0 significa que o arquivo é lido até o final e -1 significa que ocorre um erro. O erro específico pode ser identificado recuperando seu código da variável Global Errno. Mais tarde, você encontrará uma seção que descreva os erros que podem ocorrer ao usar a função read () e as técnicas para detectar e identificá -los.

A função read () é declarada no “unistd.H ”cabeçalho. Para usá -lo, você deve incluir este arquivo no seu código da seguinte forma:

#incluir

Como ler um arquivo com a função read () na linguagem C

Neste exemplo, explicaremos como abrir e ler um arquivo usando as funções abertas () e read ().

Para esse fim, criamos anteriormente um arquivo de texto com o nome, “Exemplo.txt ”, via Linux Manager e salvou -o no diretório“ documentos ”. Escrevemos o primeiro parágrafo deste artigo.

A primeira etapa no desenvolvimento do código para ler o arquivo é incluir os cabeçalhos necessários e criar uma função principal () que retorne um valor vazio. Definimos o número inteiro "FD" que serve como descritor de arquivo, um buffer de 1024 caracteres chamado "Buff", onde as informações que são lidas pela função Read () são armazenadas. O caminho da matriz armazena o caminho e o nome do arquivo que queremos ler.

Depois de definir as variáveis ​​necessárias, chamamos a função Open () para abrir o arquivo. Chamamos essa função passando a matriz do caminho com o caminho e o nome do arquivo como o primeiro argumento de entrada e especificando a bandeira O_RDONLY como o segundo argumento. Passamos pelo número inteiro "FD" como o argumento de saída em que o Open () retorna o descritor que usamos para ler no arquivo.

Depois de abrir o arquivo, lemos seu conteúdo chamando a função read () e passando o descritor "FD" que é retornado pela função Open () como o primeiro argumento. Passamos o ponteiro para o buffer "Buff" como o segundo argumento em que armazenamos o conteúdo a ser lido. Finalmente, passamos pelo tamanho do buffer, que é 1024 bytes neste caso. Em seguida, usamos a função printf () para exibir o conteúdo armazenado em "Buff" no console de comando.

Aqui está o código completo para este exemplo:

#incluir
#incluir
#incluir
#incluir
int main ()

intfd;
Buff de char [1024];
Char Path [] = "Documentos/Exemplo.TXT";
fd = aberto (caminho, o_rdonly);
Leia (FD, Buff, 1024);
printf ("\ n \ n%s \ n \ n", buff);

Na figura a seguir, vemos a compilação e a execução deste código. Como podemos ver, leia () coloca todo o conteúdo do “exemplo.O arquivo txt "em" Buff "e a função printf () imprime -o para o console de comando:

Como detectar e identificar os erros que podem ocorrer ao usar a função read () na linguagem C

O uso de read () pode gerar vários erros. Quando isso acontece, esta função retorna um resultado igual a -1.

A maneira mais fácil de determinar se ocorreu um erro é usar uma condição "se" em que a condição seja o valor de retorno de -1. Agora, vamos ver como você pode usar esse método para determinar se ocorreu um erro:

int n;
n = Read (FD, Buff, 1024);
if (n == -1)
printf ("Ocorreu um erro ao tentar ler o arquivo.");

Se a função read () retornar com um erro, ela transita para a instrução "se" e imprime a mensagem, "ocorreu um erro ao tentar ler o arquivo".

Quando ocorre um erro, um código numérico é armazenado automaticamente na variável Global Errno, que é definida no “errno.H ”cabeçalho. Este código pode ser usado para identificar o erro que ocorreu.

A seguir, é apresentado um trecho com os erros que a função read () pode gerar e que são definidos no “errno.H ”Cabeçalho, juntamente com uma breve descrição de cada erro e o valor inteiro associado:

Definição Valor em errno Erro
Eagin 11 Tente novamente.
Ebadf 9 Número do arquivo incorreto.
Edestaddrreq 89 Endereço de destino necessário.
Efault 14 endereço incorreto.
Efbig 27 Arquivo muito grande.
Eintr 4 Chamada de sistema interrompida.
Einval 22 Argumento inválido.
Eio 5 Erro de E/S.
Eperm 1 Operação não permitida.

A maneira mais fácil de identificar um erro é abrir um interruptor em que a variável errno é a condição de salto e cada caso é uma definição de erro.

Em seguida, vejamos um exemplo em que tentamos entrar em um descritor com um sinal negativo, resultando em um erro. Para identificar um erro, usamos a condição "se" que vimos no trecho anterior. Para identificá -lo, abrimos um interruptor com os três erros mais comuns que essa função pode produzir.

#incluir
#incluir
#incluir
#incluir
#incluir
int main ()

intfd, n;
Buff de char [1024];
Char Path [] = "Documentos/Exemplo.TXT";
fd = aberto (caminho, o_rdonly);
n = leia (0, buff, 1024);
if (n == -1)
switch (errno)
case ebadf:
printf ("Número de arquivo ruim. Erro: %i \ n ", errno);
quebrar;
Caso Einval:
printf ("argumento inválido. Erro: %i \ n ", errno);
quebrar;
Caso EIO:
printf ("Erro de E/S . Erro: %i \ n ", errno);
quebrar;


Como podemos ver na figura a seguir, a função read () retorna um erro quando um descritor inválido é passado como um argumento de entrada. O valor que é recuperado da variável errno é usado como uma condição de salto que nos permite identificar o erro ao entrar no caso do eBadf.

Conclusão

Neste artigo da dica do Linux, mostramos como usar a função read (), uma das funções mais comuns que são implementadas no idioma C para ler os arquivos.

Observamos sua sintaxe e uma seção que descreve sua operação teórica, argumentos de entrada e saída e seus tipos de dados. Posteriormente, implementamos o que aprendemos através de um exemplo prático com código e imagens que mostram como abrir e ler um arquivo usando as funções abertas () e read ().

Para ter os meios necessários para solucionar um possível erro ao usar essa função, adicionamos uma seção especial que explica os métodos que o idioma C fornece para detectar e identificar os erros.