Programação: Manipulação de arquivos na Linguagem C

Boa tarde a todos.

Devido a vários pedidos, irei postar hoje sobre manipulação de arquivos texto na linguagem C. Irei abrir dois arquivos, sendo que um será lido, outro será gerado conforme o conteúdo desse primeiro. Espero que gostem.


Bom gente, antes de começar a postagem, gostaria de dizer que firmei mais uma parceria, com o Alex do blog KiD LiNuX, um grande abraço Alex.
Voltando ao assunto, vamos primeiro entender alguns conceitos:

$> Função Externa:
Uma função externa, basicamente faz um tratamento, passar valor, etc… destinada a ajudar a complementação do programa principal, por exemplo, ao fazer uma função que gera médias de um aluno, posso usar uma função externa para receber notas, ou até mesmo, para calcular a média. No exemplo abaixo, usei uma função externa do tipo Char (irá retornar valores caracteres), chamada de Tratamento.

$> Manipulação de arquivos texto:
Para fazer uma manipulação de arquivos texto é simples, primeiro você deve ter ponteiros de arquivo (FILE), e depois inserir o nome a ser buscado. Ai é só usar funções complementares como fopen (abertura de arquivos), fputs (escrever no arquivo), fclose (fechar o arquivo), etc… Abaixo usei alguns exemplos. Vale ressaltar que, na abertura de um arquivo é passado um outro parâmetro, uma letra que pode ser por exemplo ‘w’ (arquivo será escrito / gerado / gravado), ‘r’ (arquivo será lido), etc.

$> Ponteiros:
Ponteiros são variáveis que alocam seus valores em trechos da memória RAM, assim, você o conteúdo de um ponteiro acompanha qualquer trecho do seu programa, sendo às vezes melhor para trabalhar em escritura de arquivos. No exemplo abaixo, usei algumas variáveis Ponteiro, elas são identificadas com um * antes do nome, por exemplo, *variavel.

Agora sim, abaixo o código completo do programinha, totalmente comentado:

/* Autor: Terminal de Informação
 * Função de Exemplo de manipulação de arquivos
 * Data: 04/10/12
 */

#include <stdio.h>;
#include <string.h>;
#include <stdlib.h>;

//Declarando funções auxiliares
char *Tratamento();

//Função Principal
main(){
  //Variável para Arquivo original e novo
  FILE *arq_orig, *arq_novo;
  //Variável para linha atual lida (com tamanho máximo de 80 caracteres)
  char lido[80];
  //Variável auxiliar que irá conter o texto
  char *auxiliar;
  //Abrindo os arquivos, r = leitura, w = gravando... orig.txt = arquivo original a ser lido ... novo.txt = arquivo que será gerado
  arq_orig  = fopen("orig.txt","r");
  arq_novo  = fopen("novo.txt","w");
    //Enquanto houver linhas para leitura
    while(fgets(lido,80,arq_orig)!=NULL){
      //Guarda linha lida em uma variável auxiliar
      auxiliar=lido;
      //Grava no arquivo novo, a linha lida
      fputs(auxiliar,arq_novo);
      //Se o último caracter da linha não for
      //\n (pula linha), pular uma linha automaticamente
      if(!(auxiliar[strlen(auxiliar)-1]=='\n'))
    fputs("\n",arq_novo);
      //Chamando a função tratamento que irá salvar
      //um texto no arquivo novo
      fputs(Tratamento(),arq_novo);
    }
  //Fechando os arquivos
  fclose(arq_orig);
  fclose(arq_novo);
}

//Função externa para tratamentos
char *Tratamento(){
  //Ponteiro char que irá conter a informação
  //da linha lida
  char *ret;
  ret="\t(Linha lida)\n";
  return ret;
}


Bom pessoal, por hoje é só, qualquer dúvida podem entrar em contato.
Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

Deixe uma resposta

Terminal de Informação