Banner Hospedagem de Sites
07/04/2020

Arquivo txt linguagem C | Manutenção: Ler e Gravar texto

Introdução

Ainda muitos processos, principalmente de troca de arquivos em sistemas é feito por arquivos textos (txt), por isso a importância do tema Arquivo txt linguagem C | Manutenção: Ler e Gravar texto.

Entretanto essas trocas destaca-se Electronic Data Interchange (EDI), que nada mais é do que uma forma mais tradicional de intercâmbio (troca) de dados entre empresas.

Por isso, tratar o assunto relacionado a Manutenção: Ler e Gravar em arquivo texto é importante.

Portanto, a linguagem de programação C é a base para as primeiras inserções destes conceitos: EDI e arquivos textos.

Objetivo: Arquivo txt linguagem C

Visto que, o objetivo é demonstrar como fazer a criação, a escrita e a leitura de arquivos, sem se preocupar com formatações ou padronizações, neste momento.

Por consequência, aprender na linguagem de programação C pura realizar os procedimentos de manutenção em um arquivo texto por linha.

Primeiro Passo

Ou seja, primeiramente para realizar o hands-on (mão na massa) é necessário ter um computador ou notebook que tenha o compilador da linguagem e programação C e um editor de texto para digitação do código.

Portanto, como sugestão, a ferramenta para o hands-on será:

  • Code::Blocks (IDE de desenvolvimento voltado a Linguagem C), distribuído na forma de licenciamento GPL (General Public Licence).

Segundo Passo

Primeiro deve-se abrir a ferramenta IDE Code::Blocks.

Agora, clicar no menu FILE, depois NEW e por fim em EMPTY FILE.

Pronto, agora é só iniciar a digitação do código fonte.

Importante: Salvar o arquivo com a extensão .c que se refere a linguagem de programação C pura.

Contudo, quando terminar o código aperte o botão da engrenagem para compilar e tirar possíveis erros de escrita do código.

Por fim, estando a compilação ok, clique no botão com o símbolo do play para executar e testar o código.

Escrita de Arquivo: Arquivo txt linguagem C

Terceiro Passo

Iniciar a digitação do código para criar o arquivo, caso ele não exista.

Após ser criado, receber via teclado a frase (linha de texto) que será gravada no arquivo.

Se for digitada, três frases, três linhas devem ser gravadas no arquivo texto.

Primeira Parte: Digitar o código

#include "stdio.h"

int main(){
    FILE *arq;

    int op = 1;
    char texto_linha[30];

    arq = fopen("arquivo.txt", "w");

    while (op == 1){

        printf("\nDigite o texto da linha: ");
        fflush(stdin);
        scanf("%[^\n]s", &texto_linha);
        fputs(texto_linha, arq);


        printf("\nContinuar? (0-nao / 1-sim): ");
        scanf("%d", &op);

        if(op == 1){
            fputs("\n", arq);
        }

    }
    fclose(arq);

    return 0;
}

Explicação de cada linha:

Biblioteca e definição das variáveis

  • #include “stdio.h”
    • Está linha é responsável em incorporar a biblioteca que implementa os comandos para trabalhar com arquivos texto.
  • FILE *arq;
    • definindo uma variável compatível para manipular arquivos.
  • int op = 1;
    • Declaração de uma variável inteira que controlará o fluxo do while (laço) para continuar a digitar novas linhas ou terminar a digitação de linhas (0 – termina / 1 – continua).
  • char texto_linha[30];
    • Declaração de uma variável char com a capacidade de 30 caracteres que será utilizada para receber os valores que serão inseridos nos arquivos.

Abertura do arquivo e Digitação do texto

  • arq = fopen(“arquivo.txt”, “w”);
    • fopen é o comando que tentará abrir o arquivo.
    • w (write) é o modo de abertura do arquivo para escrita, que indica:
      • Se o arquivo não existir criará, já caso exista, destruirá e criará novamente o arquivo.
    • A partir do momento da abertura do arquivo, a variável arq será o apontador sempre que se quiser referir ao arquivo em questão.
  • while (op == 1){
    • Laço de controle se o usuário optará por digitar mais linhas ou não, seguindo como explicado na linha que declara a variável op.
  • printf(“\nDigite o texto da linha: “);
    • Exibe na tela a mensagem entre aspas, onde o operador \n pula uma linha antes da escrita do texto.
  • fflush(stdin);
    • Usado para limpa o Buffer do teclado.
    • Tudo que é digitado fica nesta memória temporária do teclado (buffer do teclado).
    • Em alguns momentos a linguagem C não consegue limpar essa área automaticamente.
    • Dessa forma, quando encontra um novo scanf ao invés de esperar a nova digitação pega a sujeira existente no teclado, por isso o uso do fflush.
  • scanf(“%[^\n]s”, &texto_linha);
    • Comando para fazer a digitação da variável texto_linha.
    • Este comando necessita o uso do & antes da variável para ter o apontamento da mesma na memória.
    • E utiliza o escopo de acordo com a variável, como está é um char de 30 posições, o correto é usar %s.
    • A adição [^\n] serve para negar o espaço entre palavras sendo o fim da cadeia de caracteres.
    • ou seja, sem este ao dar espaço, mesmo digitando mais de uma palavra será armazenada na variável apenas uma palavra.
  • fputs(texto_linha, arq);
    • Comando que faz a escrita do texto na variável texto_linha dentro do arquivo que foi aberto no apontador arq.

Pergunta se quer adicionar mais linhas

  • printf(“\nContinuar? (0-nao / 1-sim): “);
    • Exibe na tela a mensagem entre aspas, onde o operador \n pula uma linha antes da escrita do texto.
    • Neste caso a mensagem indicando como fazer para continuar digitando textos, ou como parar o programa.
  • scanf(“%d”, &op);
  • if(op == 1){
    • Condicional que permitirá adicionar a quebra de linha no arquivo se a opção seja adicionar outra linha, no caso op == 1.
  • fputs(“\n”, arq);
    • Comando que faz a escrita, neste caso uma quebra de linha \n.
    • Adiciona uma quebra de linha caso o usuário opte por adicionar um novo texto.
    • Isso é importante porque senão as linhas se juntariam em uma única linha.
    • Este if impossibilita de haver uma linha em branco (vazia) no final do arquivo.
    • Uma linha em branco (vazia) no final do arquivo pode prejudicar a leitura com a repetição da última linha.
  • }
    • Chave fecha o if que verifica se for haver a digitação de uma nova linha é adicionada uma quebra de linha no arquivo.
  • }
    • Chave que fecha o laço relacionado a digitação de mais linhas, este laço depende da pergunta continua e do valor digitado como resposta no scanf da variável op.

Fechamento do arquivo e Encerramento do programa

  • fclose(arq);
    • Fecha o arquivo relacionado ao apontador arq.
    • Importante fechar o arquivo para que o mesmo não tenha risco de ser corrompido.
  • return 0;
    • Pelo fato do main ter como definição de retorno um int, é obrigatório o uso do return, no caso como não é utilizado o valor retorna zero.
  • }
    • Chave que fecha o main.

Segunda Parte: Executar o Código

A princípio, após a compilação do código, chega o momento de realizar a execução, abaixo foram inseridas quatro linhas, sendo: linha 1; linha 2; linha 3 e linha 4.

Digite o texto da linha: linha 1
>Continuar? (0-nao / 1-sim): 1
Digite o texto da linha: linha 2
Continuar? (0-nao / 1-sim): 1
Digite o texto da linha: linha 3
Continuar? (0-nao / 1-sim): 1
Digite o texto da linha: linha 4
Continuar? (0-nao / 1-sim): 0
Process returned 0 (0x0)   execution time : 21.487 s
Press any key to continue.

Terceira Parte: Verificar o Arquivo

Logo após a execução é importante verificar se o arquivo, arquivo.txt, foi ciado e se o mesmo tem o conteúdo das quatro linhas.

Dessa maneira, é importante destacar que o arquivo.txt será criado no diretório onde se encontra o código fonte, caso precise gravar em um local diferente é possível defini-lo junto com o nome do arquivo, colocando o caminho de forma completa.

Entretanto, abrindo o arquivo.txt o mesmo deverá ter a seguinte visualização:

linha 1
linha 2
linha 3
linha 4

Por enquanto, está finalizada a parte de criação e gravação no arquivo texto, agora que existe o arquivo.txt com o conteúdo gerado pelo primeiro código, chega o momento de criar o código para fazer a leitura linha a linha.

Leitura de Arquivo: Arquivo txt linguagem C

Quarta Parte: Leitura do arquivo

Com o arquivo criado e gravado o conteúdo, chega o momento do código que fará a leitura:

#include "stdio.h"

int main(){
    FILE *arq;
    char texto_linha[30];

    arq = fopen("arquivo.txt", "r");
    if (arq == NULL){
     printf("Impossivel abrir arquivo!");
    }else{
        while (!feof(arq)){
          fgets(texto_linha, 30, arq);
          printf("%s", texto_linha);
        }
    }

    fclose(arq);

    return 0;
}

Então segue explicação de cada linha (nesta descrição serão omitidas as linhas iguais ao programa de escrita):

Abertura e Verificação do arquivo

  • arq = fopen(“arquivo.txt”, “r”);
    • Faz a abertura do arquivo arquivo.txt, em modo r, no caso leitura.
    • Para que consiga fazer a abertura o mesmo deve existir.
    • Tentará abrir o arquivo no mesmo diretório do arquivo fonte.
  • if (arq == NULL){
    • Como há a possibilidade de não conseguir abrir o arquivo é importante testar se a abertura foi realizada.
    • Para isso, testa-se a variável arq com o valor NULL (que indica que a a variável está vazia, ou seja, não abriu o arquivo.
  • printf(“Impossivel abrir arquivo!”);
    • Caso não tenha aberto o arquivo apresentará a mensagem entre aspas.
    • Como o final do if cai no fclose(arq), fechará o arquivo e terminará o programa.
  • }else{
    • Caso tenha aberto o arquivo.

Laço de leitura do arquivo

  • while (!feof(arq)){
    • Este laço será executado de acordo com o critério entre parênteses.
    • Neste caso, enquanto não (representado pelo !) for final de arquivo (representado pelo feof) do arquivo (representado por arq), continuará no laço.
    • Ou seja, se tiver quatro linhas executará o laço 4 vezes, se tiver 5 linhas executará 5 vezes e assim por diante.
    • !feof(arq) representa diferente de final de arquivo.
    • feof(arq) representa final de arquivo.
  • fgets(texto_linha, 30, arq);
    • Este comando faz a leitura da linha do arquivo arq, pegando 30 caracteres e jogando esse conteúdo na variável texto_linha.
  • printf(“%s”, texto_linha);
  • }
    • Fecha o laço do while (!feof(arq)){.
  • }
    • Fecha o else do condicional if (arq == NULL){ , que no caso, este senão representa que consegui abrir o arquivo.

Logo depois de aplicada a execução do código de leitura do arquivo.txt o mesmo dará a  seguinte visualização:

linha 1
linha 2
linha 3
linha 4

Primordialmente, os códigos apresentados consideram uma situação perfeita, tanto na criação do arquivo, em sua escrita e na sua leitura.

Mas, é importante tratar e verificar se o arquivo foi criado ou aberto, pois pode haver erros nestes processos, exemplo: não ter permissão no diretório onde se encontra o arquivo.

Conclusão: Arquivo txt linguagem C

Por fim, os códigos apresentados demonstram como realizar a criação, escrita e leitura de arquivos textos usando a linguagem de programação C pura linha a linha de texto.

Contudo, se pensarmos em um processo de EDI, seria necessário padronizar esse texto e definir um separador, pois em uma linha podemos ter mais de uma informação sobre determinado registro.

Todavia, esse tipo de processo será apresentado em artigos futuros.

Com o propósito de ver outras postagens sobre linguagens de programação, Clique aqui para acompanhar.

Share

Luis Alexandre da Silva

Professor e Consultor de tecnologia em desenvolvimento de sistemas.Possui mestrado em Ciência da Computação pela UNESP (2016), especialização em Gestão Integrada de Pessoas e Sistemas de Informação pela FIB (2008) e graduação em Análise de Sistemas pela Universidade do Sagrado Coração (1997).Por fim, tem experiência em Gerenciamento de Projetos, Linguagens de Programação e Banco de Dados. Atuando principalmente nos seguintes temas: ensino, gerenciamento de projetos, ITIL, Desenvolvimento WEB e processos BPO.

Você pode querer ver também...

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *