Pular para conteúdo

Gerenciamento de Arquivos 💾

Aula 13 - Persistindo Dados


O que vamos aprender hoje? 📅

  • Por que usar arquivos?
  • O ponteiro FILE
  • Abrindo (fopen) e Fechando (fclose)
  • Modos de acesso (r, w, a)
  • Lendo e Gravando dados

Memória Volátil vs Permanente 🧠

  • Variáveis: Somem quando o programa fecha (RAM).
  • Arquivos: Ficam no disco rígido (SSD/HD).

O Fluxo de Trabalho de Arquivos 🔄

  1. Abrir: Pedir permissão ao SO.
  2. Verificar: Deu certo? (FILE != NULL).
  3. Processar: Ler ou Escrever.
  4. Fechar: Salvar tudo e liberar recurso.

O tipo FILE 📂

#include <stdio.h>

FILE *arquivo;

FILE é uma estrutura definida na stdio.h que gerencia toda a comunicação com o disco.


Abrindo o Arquivo 🔑

arquivo = fopen("config.txt", "w");
  • config.txt: Nome do arquivo.
  • "w": Modo de abertura.

Modos de Abertura 🚦

  • "r" (Read): Só leitura. Erro se não existir.
  • "w" (Write): Sobrescreve. Cria se não existir.
  • "a" (Append): Adiciona ao final sem apagar.

Escrita Formatada: fprintf ✍️

fprintf(arquivo, "Pontuação: %d\n", score);

É o printf com destino configurável!


Leitura: fgets e fscanf 📖

char buffer[100];
// Lê uma linha inteira do arquivo
fgets(buffer, 100, arquivo);

Verificação de Erro 🛡️

Sempre faça isso:

if (arquivo == NULL) {
    printf("Erro ao abrir!");
    return 1;
}

Fim de Arquivo (EOF) 🏁

while (!feof(arquivo)) {
    // Ler dados...
}

Diz ao programa para parar quando o arquivo acabar.


O Esquecimento Fatal 💀

Sempre feche seu arquivo!

fclose(arquivo);

Se não fechar: * Dados podem não ser gravados. * O arquivo fica "preso" no sistema.


Desafio da Aula 🚀

Crie o "Logger de Acessos": Salve o nome do usuário e a hora em um arquivo de log sem apagar os anteriores.


Próxima Aula 🔜

Aula 14 - Organização de Projetos

Como dividir seu código em múltiplos arquivos .c e .h? 📂


Dúvidas? 🤔

O disco rígido é o limite!


FIM DA AULA 13 ✨

Seus dados agora são eternos!