aula 210

Leitura e escrita em arquivo com funções e procedimentos

Nas aulas anteriores nós aprendemos a escrever e a ler em arquivo texto com as funções fputc e fgetc. Contudo, todo nosso código ficou dentro da função main. Nesta aula vamos ver como organizar a leitura e a escrita em arquivo com funções e procedimentos.

Como já aprendemos ao longo do nosso curso, dividir um problema em partes (funções e procedimentos) é uma estratégia muito eficiente que torna a solução do mesmo mais fácil. Como normalmente um mesmo sistema terá de ler e escrever em arquivos, podemos criar procedimentos específicos para estas ações e chamar sempre que for necessário, como apresentado a seguir.

No trecho de código a seguir temos um procedimento para escrever em arquivo. O nome do arquivo é passado para o procedimento como parâmetro. Neste exemplo o conteúdo a ser escrito no arquivo será lido do teclado dentro do procedimento. Contudo, em um sistema real, normalmente essas informações viriam também por parâmetro, junto com o nome do arquivo, ou seriam buscadas em alguma fonte como um banco de dados ou mesmo na web.

// procedimento para escrever em um arquivo texto

void escrever(char f[]) {
    FILE *file = fopen(f, "w");
    char letra;

    if(file) {
        printf("\nDigite um texto e pressione ENTER ao finalizar!");
        scanf("%c", &letra);
        while(letra != '\n') {
            fputc(letra, file);
            scanf("%c", &letra);
        }
        fclose(file);
    } else
        printf("\nERRO ao abrir arquivo!\n");
}

De forma muito semelhante ao procedimento anterior, temos a seguir um procedimento para fazer a leitura de um arquivo. O nome do arquivo é recebido como parâmetro e o mesmo será aberto para leitura. Caso o arquivo seja aberto com sucesso, seu conteúdo será lido e impresso no terminal.

// procedimento para ler um arquivo texto 

void ler(char f[]) {
    FILE *file = fopen(f, "r");
    char letra;

    if(file){
        printf("\n\tTexto lido do arquivo:\n");
        while(!feof(file)) {
            letra = fgetc(file);
            printf("%c", letra);
        }
        fclose(file);
    }
    else
        printf("\nERRO ao abrir arquivo!\n");
}

Agora que a leitura e a escrita no arquivo não serão mais feitas dentro da função main, esta fica com seu tamanho bem resumido, como apresentado a seguir.

int main() {

    char nome[] = {"conto.txt"};

    escrever(nome);
    ler(nome);

    return 0;
}

Código de exemplo completo em C com procedimentos para ler e escrever em arquivo texto

/*
        Aula 210: Organizando nosso código em procedimentos

        Código escrito por Wagner Gaspar
        Junho de 2021

        Modos de abertura de arquivos:
        w -> Escrita
        r -> leitura
        a -> anexar
        r+ -> leitura e escrita
        w+ -> leitura e escrita (apaga o conteúdo caso o arquivo exista)
        a+ -> leitura e escrita (adiciona ao final do arquivo)
*/

#include <stdio.h>
#include <stdlib.h>

void escrever(char f[]) {
    FILE *file = fopen(f, "w");
    char letra;

    if(file) {
        printf("\nDigite um texto e pressione ENTER ao finalizar!");
        scanf("%c", &letra);
        while(letra != '\n') {
            fputc(letra, file);
            scanf("%c", &letra);
        }
        fclose(file);
    } else
        printf("\nERRO ao abrir arquivo!\n");
}

void ler(char f[]) {
    FILE *file = fopen(f, "r");
    char letra;

    if(file){
        printf("\n\tTexto lido do arquivo:\n");
        while(!feof(file)) {
            letra = fgetc(file);
            printf("%c", letra);
        }

        fclose(file);
    }
    else
        printf("\nERRO ao abrir arquivo!\n");
}

int main() {

    char nome[] = {"conto.txt"};

    escrever(nome);
    ler(nome);

    return 0;
}

Deixe um comentário

três + 19 =

Wagner Gaspar

Capixaba de São Gabriel da Palha, Espírito Santo. Bacharel em Ciência da Computação pela Universidade Federal do Amazonas e mestre em informática pela Universidade Federal do Espírito Santo.