Pular para conteúdo

Aula 13 – Arquivos (Gerenciamento de Dados) 💾

Até agora, todos os dados que digitamos sumiam assim que o programa era fechado. Para criar sistemas reais, precisamos salvar as informações no disco rígido. Em C, fazemos isso usando o ponteiro especial FILE.


📂 1. Abrindo e Fechando Arquivos

Para trabalhar com um arquivo, primeiro devemos "abri-lo" e, ao terminar, "fechá-lo" obrigatoriamente para garantir que os dados sejam salvos.

#include <stdio.h>

int main() {
    FILE *arquivo;

    // fopen(nome_do_arquivo, modo)
    arquivo = fopen("dados.txt", "w"); // "w" = write (escrever)

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

    // ... realizar operações ...

    fclose(arquivo); // SEMPRE feche o arquivo!
    return 0;
}

🚦 2. Modos de Abertura

Modo Descrição
"r" Read: Abre para leitura (o arquivo deve existir).
"w" Write: Abre para escrita (cria novo ou sobrescreve o existente).
"a" Append: Abre para adicionar ao final (não apaga o que já existe).

✍️ 3. Escrevendo no Arquivo (fprintf)

É quase igual ao printf, mas o primeiro parâmetro é o ponteiro do arquivo.

fprintf(arquivo, "Nome: %s | Idade: %d\n", "Ricardo", 20);

📖 4. Lendo do Arquivo (fscanf e fgets)

  • fscanf: Lê dados formatados (para no espaço).
  • fgets: Lê uma linha inteira do arquivo.
char linha[100];
while (fgets(linha, 100, arquivo) != NULL) {
    printf("%s", linha);
}

💻 Exemplo Prático: Diário Simples

FILE *arq = fopen("notas.txt", "a");
char texto[50];

printf("Escreva algo para o arquivo: ");
fgets(texto, 50, stdin);

fprintf(arq, "%s", texto);
fclose(arq);

🚀 Mini-Projeto da Aula: "Gerador de Log"

Objetivo: Criar um programa que peça o nome do usuário e registre em um arquivo chamado acessos.log o nome dele seguido da frase "Acessou o sistema". O programa deve usar o modo "a" para não apagar os acessos anteriores.


📝 Exercícios de Fixação

  1. Crie um programa que abra um arquivo de texto, leia o conteúdo e o imprima em letras maiúsculas no terminal.
  2. Escreva um programa que peça 5 números ao usuário e os salve em um arquivo chamado numeros.txt, um por linha.
  3. Desafio: Crie uma função que conte quantas linhas existem em um arquivo de texto específico.

Próxima Aula: Organização de Projetos