Manipulação de Arquivos em C: Como Ler e Escrever Dados

Aprenda a manipular arquivos em C: como abrir, ler, escrever e fechar arquivos, com boas práticas e exemplos práticos para textos e binários.

Compartilhar no Linkedin Compartilhar no WhatsApp

Tempo estimado de leitura: 6 minutos

Imagem do artigo Manipulação de Arquivos em C: Como Ler e Escrever Dados

Introdução
A manipulação de arquivos é uma das competências mais importantes para quem deseja evoluir na programação em Linguagem C. Por meio dela, é possível criar aplicações capazes de armazenar dados de forma persistente, permitindo que as informações continuem disponíveis mesmo após o encerramento do programa. Esse recurso é amplamente utilizado em sistemas reais, como softwares de cadastro, aplicações financeiras, jogos e ferramentas de automação.

Ao dominar a leitura e escrita de arquivos, o programador passa a interagir diretamente com o sistema operacional, utilizando o armazenamento secundário para registrar dados, gerar relatórios e processar grandes volumes de informação com mais eficiência.

Por que utilizar arquivos em C?
Diferentemente das variáveis armazenadas na memória RAM, que perdem seus valores ao final da execução do programa, os arquivos permitem a persistência dos dados. Isso significa que informações podem ser reutilizadas em execuções futuras, tornando os programas muito mais úteis e completos.

Comparação visual entre dados temporários na memória RAM e dados persistentes armazenados em arquivos.

Entre os principais benefícios do uso de arquivos em C, destacam-se:

  • Armazenamento permanente de dados, como cadastros e configurações;
  • Geração de relatórios e logs de execução;
  • Processamento de grandes quantidades de dados sem sobrecarregar a memória;
  • Integração com outros sistemas por meio de arquivos de texto ou binários.

Esse conhecimento é essencial para quem pretende avançar em áreas como desenvolvimento de sistemas, programação embarcada e estruturas de dados. Para aprofundar seus estudos, você também pode conferir conteúdos relacionados em Linguagens de Programação.

Tipos de arquivos em C
Na linguagem C, os arquivos podem ser classificados basicamente em dois tipos principais, cada um com características e aplicações específicas.

Ilustração dividida em duas partes comparando arquivos de texto e arquivos binários.

Arquivos de texto
São arquivos que armazenam informações em formato legível por humanos. Exemplos comuns incluem arquivos .txt, .csv e .log. Eles são amplamente utilizados para relatórios, registros de execução e troca simples de dados entre sistemas.

Arquivos binários
Armazenam dados em formato bruto, exatamente como estão na memória. São mais compactos, eficientes e ideais para estruturas complexas, como registros, imagens ou dados numéricos em grande escala. Em contrapartida, não são facilmente legíveis sem um programa específico.

Principais funções para manipulação de arquivos
A linguagem C oferece um conjunto de funções da biblioteca padrão <stdio.h> para trabalhar com arquivos. Conhecer essas funções é essencial para implementar leitura e escrita de dados de forma segura.

  • fopen() – Abre um arquivo e retorna um ponteiro do tipo FILE*;
  • fclose() – Fecha o arquivo, liberando recursos do sistema;
  • fprintf() e fscanf() – Escrevem e leem dados formatados em arquivos de texto;
  • fgets() e fputs() – Manipulam linhas de texto;
  • fwrite() e fread() – Gravem e leem blocos de dados em arquivos binários.
Lista visual de funções em C com pequenos ícones explicativos.

Para consultar a documentação oficial dessas funções, vale a pena acessar o site da linguagem C no cppreference, uma das fontes mais confiáveis para programadores.

Exemplo prático: escrevendo e lendo um arquivo de texto
A seguir, veja um exemplo simples que demonstra como criar um arquivo, escrever informações nele e, em seguida, realizar a leitura do seu conteúdo.

#include <stdio.h>

int main() {
    FILE *arq = fopen("dados.txt", "w");
    if (arq == NULL) {
        printf("Erro ao abrir o arquivo!\n");
        return 1;
    }

    fprintf(arq, "Nome: Maria\nIdade: 25\n");
    fclose(arq);

    arq = fopen("dados.txt", "r");
    char linha[100];
    while (fgets(linha, 100, arq) != NULL) {
        printf("%s", linha);
    }
    fclose(arq);

    return 0;
}
Tela de editor de código com exemplo em C e saída no terminal.

Esse exemplo ilustra um fluxo muito comum em aplicações reais: gravação de dados, fechamento do arquivo e posterior leitura das informações armazenadas.

Boas práticas na manipulação de arquivos
Seguir boas práticas ajuda a evitar erros, perda de dados e problemas de desempenho. Algumas recomendações essenciais incluem:

  • Sempre verificar se o arquivo foi aberto corretamente;
  • Fechar o arquivo após o uso com fclose();
  • Utilizar o modo de abertura adequado (r, w, a, rb, wb);
  • Tomar cuidado com o tamanho e o tipo dos dados ao trabalhar com arquivos binários;
  • Evitar sobrescrever arquivos importantes sem confirmação.

Essas práticas tornam o código mais seguro, legível e confiável, características muito valorizadas no mercado de trabalho.

Conclusão
A manipulação de arquivos em C amplia significativamente as possibilidades de seus programas, permitindo a criação de soluções robustas, eficientes e alinhadas às necessidades do mundo real. Seja para armazenar dados simples ou processar grandes volumes de informação, esse conhecimento é indispensável para qualquer programador que deseja evoluir na linguagem.

Invista tempo em praticar exemplos, explorar novos formatos de arquivos e aprofundar seus estudos. Aproveite também outros conteúdos disponíveis em Linguagens de Programação e Informática (TI) para continuar sua jornada no mundo da programação.

Testes Exploratórios em QA: como encontrar bugs rápido com charters, heurísticas e sessões timeboxed

Aprenda testes exploratórios com charters, heurísticas e sessões timeboxed para encontrar bugs com mais rapidez e foco.

TDD, BDD e ATDD em QA: como escolher a abordagem certa e transformar requisitos em testes

Entenda TDD, BDD e ATDD na prática e saiba quando aplicar cada abordagem para transformar requisitos em testes eficazes.

Pirâmide de Testes na Prática: como equilibrar testes unitários, de API e UI para entregar com confiança

Aprenda a aplicar a Pirâmide de Testes na prática e equilibrar unit, API e UI para entregas mais rápidas e confiáveis.

Matriz de Risco em QA: como priorizar testes e encontrar bugs que realmente importam

Aprenda a usar matriz de risco em QA para priorizar testes por impacto e probabilidade e encontrar bugs críticos primeiro.

Estratégia de Teste em QA: Como Desenhar Um Plano Enxuto, Rastreável e Orientado a Resultados

Estratégia de testes em QA: defina objetivos, escopo, rastreabilidade, dados/ambiente, métricas e automação com foco em risco.

Sistema de Arquivos em Sistemas Operacionais: como Linux, Windows e macOS organizam, protegem e recuperam seus dados

Entenda como Linux, Windows e macOS organizam e protegem dados com seus sistemas de arquivos e como escolher o melhor formato.

Permissões, Usuários e Grupos em Sistemas Operacionais: controle de acesso no Linux, Windows e macOS

Entenda usuários, grupos e permissões no Linux, Windows e macOS e aprenda a aplicar controle de acesso com mais segurança.

Kernel, Drivers e Chamadas de Sistema: o que realmente faz um Sistema Operacional funcionar

Entenda kernel, drivers e syscalls e veja como o sistema operacional gerencia hardware, processos e segurança na prática.