Capítulo 12: Arquivos (Escrita) 📝🧟

Neste capítulo, vamos aprender a salvar informações em arquivos de texto externos para que elas não se percam quando o programa for fechado, com o tema The Last of Us!


📖 Por que usar Arquivos?

Até agora, todas as variáveis que criamos sumiam da memória assim que o programa terminava. Para salvar o progresso de um jogo ou manter um registro (log) de sobreviventes, precisamos gravar esses dados no disco rígido do computador!

Em C, usamos um ponteiro especial do tipo FILE *.


📖 Exemplo Guiado: Registro de Sobreviventes

Vamos criar um programa que salva o nome e a condição de um sobrevivente em um arquivo chamado diario.txt.

  1. Crie o arquivo salvar_sobrevivente.c na pasta src/:
#include <stdio.h>
 
int main() {
    // Ponteiro para o arquivo
    FILE *arquivo;
 
    // Abrindo o arquivo no modo "w" (write - escrita)
    // Se o arquivo não existir, ele será criado. Se existir, será apagado e recriado!
    arquivo = fopen("diario.txt", "w");
 
    if (arquivo == NULL) {
        printf("Erro ao abrir o arquivo!\n");
        return 1;
    }
 
    // Escrevendo no arquivo usando fprintf (funciona igual ao printf, mas grava no arquivo)
    fprintf(arquivo, "Registro de Sobrevivente\n");
    fprintf(arquivo, "Nome: Joel\n");
    fprintf(arquivo, "Status: Saudavel\n");
 
    // REGRA DE OURO: Sempre feche o arquivo!
    fclose(arquivo);
 
    printf("Dados salvos no diario.txt com sucesso!\n");
 
    return 0;
}

🕹️ Como Executar e Testar no VS Code

  1. Abra o terminal integrado.
  2. Compile: gcc salvar_sobrevivente.c -o salvar_sobrevivente
  3. Execute: ./salvar_sobrevivente
  4. Um arquivo chamado diario.txt aparecerá na sua pasta! Abra-o para ver o conteúdo.

📊 Ilustração Visual: Fluxo de Escrita

Veja como o C envia os dados para o disco:

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

🛠️ Prática Obrigatória 1: Modo Append (Anexar)

O modo "w" apaga o arquivo se ele já existir. Para apenas ADICIONAR novas linhas no final do arquivo sem apagar o que já estava lá, usamos o modo "a" (append). Crie um programa chamado anexar_nota.c que use o modo "a" para adicionar a linha “Nota: Cuidado com os estaladores!” no arquivo diario.txt.


🔑 Gabarito de Código

Prática 1: anexar_nota.c

#include <stdio.h>
 
int main() {
    FILE *arquivo;
 
    // Modo "a" de append
    arquivo = fopen("diario.txt", "a");
 
    if (arquivo == NULL) {
        printf("Erro ao abrir o arquivo!\n");
        return 1;
    }
 
    fprintf(arquivo, "Nota: Cuidado com os estaladores!\n");
 
    fclose(arquivo);
    printf("Nota adicionada ao diario!\n");
 
    return 0;
}

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

(Siga o padrão estabelecido no Guia)


Capitulo Anterior | Proximo Capitulo