Capítulo 13: Arquivos (Leitura) 📖🕵️‍♂️

Neste capítulo, vamos aprender a ler as informações contidas em um arquivo de texto e exibi-las no nosso programa, continuando com o tema The Last of Us!


📖 Como ler de um Arquivo?

Para ler um arquivo, usamos o modo "r" (read - leitura) na função fopen. Se o arquivo não existir, ela retornará NULL. Usamos funções como fgets para ler o arquivo linha por linha.


📖 Exemplo Guiado: Lendo o Diário

Vamos ler o arquivo diario.txt que criamos no capítulo anterior e exibir seu conteúdo no terminal.

  1. Crie o arquivo ler_diario.c na pasta src/ (certifique-se de que o arquivo diario.txt está na mesma pasta onde você vai executar o programa):
#include <stdio.h>
 
int main() {
    FILE *arquivo;
    char linha[100]; // Buffer para guardar cada linha lida
 
    // Abrindo no modo "r" (read)
    arquivo = fopen("diario.txt", "r");
 
    if (arquivo == NULL) {
        printf("Erro: O arquivo diario.txt nao foi encontrado!\n");
        printf("Rode o programa do Capitulo 12 primeiro para cria-lo.\n");
        return 1;
    }
 
    printf("--- Lendo o Diario de Sobrevivencia ---\n\n");
 
    // fgets lê uma linha inteira do arquivo e guarda na variável 'linha'
    // O loop continua até que o fgets retorne NULL (fim do arquivo)
    while (fgets(linha, 100, arquivo) != NULL) {
        printf("%s", linha);
    }
 
    fclose(arquivo);
    return 0;
}

🕹️ Como Executar e Testar no VS Code

  1. Certifique-se de que o arquivo diario.txt existe na pasta (criado pelo programa do Cap 12).
  2. Compile: gcc ler_diario.c -o ler_diario
  3. Execute: ./ler_diario

Resultado Esperado:

--- Lendo o Diario de Sobrevivencia ---
 
Registro de Sobrevivente
Nome: Joel
Status: Saudavel
Nota: Cuidado com os estaladores!

📊 Ilustração Visual: Fluxo de Leitura

Veja como o C traz os dados do disco para o programa:

graph LR
    A[💾 Arquivo no Disco: diario.txt] -->|1. fopen 'r'| B[FILE* Ponteiro]
    B -->|2. fgets linha por linha| C[💻 Programa em C]
    C -->|3. fclose| C

🛠️ Prática Obrigatória 1: Contando Linhas

Crie um programa chamado contar_linhas.c que leia o arquivo diario.txt e conte quantas linhas ele possui. Exiba o total no final. (Dica: use um contador dentro do loop while (fgets...)).


🔑 Gabarito de Código

Prática 1: contar_linhas.c

#include <stdio.h>
 
int main() {
    FILE *arquivo;
    char linha[100];
    int contador = 0;
 
    arquivo = fopen("diario.txt", "r");
 
    if (arquivo == NULL) {
        printf("Arquivo nao encontrado!\n");
        return 1;
    }
 
    while (fgets(linha, 100, arquivo) != NULL) {
        contador++;
    }
 
    fclose(arquivo);
 
    printf("O arquivo possui %d linhas.\n", contador);
 
    return 0;
}

📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)

(Siga o padrão estabelecido no Guia)


Capitulo Anterior | Proximo Capitulo