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.