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.
- Crie o arquivo
ler_diario.cna pastasrc/(certifique-se de que o arquivodiario.txtestá 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
- Certifique-se de que o arquivo
diario.txtexiste na pasta (criado pelo programa do Cap 12). - Compile:
gcc ler_diario.c -o ler_diario - 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)