Ir para conteúdo
Fórum Script Brasil
  • 0

Trabalhando Com Arquivos Txt Em C


Guest thyagossm

Pergunta

Guest thyagossm

Ola pessoal, boa tarde!

Estou enfrentando dificuldade de elaborar uma função/procedimento em C que colete informações de um arquivo txt na forma abaixo e jogue para dentro de uma matrix

O Arquivo possui as seguintes colunas de modo que cada uma identifica campo:

Período POA SP Bahia

out/05 1299.6 4487.3 94898.0

nov/05 1272.9 4439.4 93528.4

dez/05 1246.8 4424.8 92193.9

jan/06 1220.2 4407.6 91190.6

fev/06 1190.6 4351.3 90112.7

mar/06 1163.9 4305.9 89105.4

abr/06 1134.5 4250.6 87960.8

mai/06 1106.3 4200.0 86919.6

jun/06 1588.7 4146.8 85830.0

O Objetivo do programa é ler estes dados e calcular e procurar o maior e menor valor e maior variação entre os periodos

E após isto gerar arquivos de relatórios com estes dados

Como posso elaborar uma função que colete os dados de forma organizada e que possa varrer as informações tranquilamente?

Obrigado.

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Pelo que entendi:

Esse arquivo tem quatro campos: uma data e três medições.

Primeiro, algumas perguntas:

- O que gera esse arquivo?

- Você realmente tem necessidade que o programa seja em C (programas em C geralmente rodam apenas em console e apresentam maior dificuldade para gerar relatórios)?

Vamos verificar qual sua necessidade real para poder elaborar algo... Explique melhor do que se tratam esses dados e como você os obtém... Dependendo do problema você consegue exporta-los para o Excel sem nenhuma dificuldade e resolver seu problema.

Link para o comentário
Compartilhar em outros sites

  • 0

Ola Felipe,

Agradeço a atenção ao meu pequeno projeto.

Na verdade preciso ler um arquivo texto e a partir dele gerar arquivos de respostas referente ao resultado que leio desto arquivo.

Neste arquivo txt eu tenho dados sobre a dívida de municípios (p.ex: Ipatinha, Recife e Porto Alegre) durante um certo período

Resumidademente o arquivo texto possui 3 séries de dados.

Devo a partir da leitura do arquivo gerar 4 arquivos no total:

* um para cada série de dados referente a cada um dos municípios = ou seja 3 arquivos, com os valores normalizados em um arquivo final = contendo um resumo das informações lidas (total de dados, média de cada série de dado, maior e menor valor de cada série de dado e a linha onde ocorreu a maior variação absoluta do valor da série)

*Resumo : Os arquivos de saída deverão apresentar os dados normalizados em relação ao primeiro valor de cada série e organizados em 3 grupos, por cidade: DividaIPA.txt (São Leopoldo), DividaRE.txt (Canoas) e DividaPOA.txt (Porto Alegre). O resultado que se espera ter dentro de cada um destes arquivos é apresentado a seguir.

DividaSL.txt DividaCA.txt DividaPA.txt

1,00 1,00 1,00

0,98 0,99 0,99

0,96 0,99 0,97

0,94 0,98 0,96

E o quarto arquivo de relatório – relatório final (relat.txt) deverá apresentar os seguintes dados:

Relatório Final.txt - Total dados: 15 linhas (meses)

Media = 1462,5 Maior = 2237,5 Menor = 1106,3 Maior Variação: 9

Media = 4183,1 Maior = 4487,3 Menor = 3813,7 Maior Variação: 14

Media = 89043,8 Maior = 108598,2 Menor = 81320,7 Maior Variação: 15

Assim devo trabalhar com matriz ou vetor?

Na verdade o objetivo é verificar um pouco da experiência em C, visto que utilizarei o mesmo durante o mestrado do qual estou cursando.

Depois ainda tenho que elaborar outro programa para a mesma situação usando a alocação dinamica (calloc, malloc)

O programa deve pedir que o usuário informe qual a quantidade de dados que pretende ler do arquivo, onde se o arquivo for maior que a quantidade de dados indicada pelo usuário, os dados excedentes devem ser desprezados.

Com certeza em Excell é bem tranquilo de fazer.

Espero ter explicitado.

Um abraço,

Paz e bem!

Link para o comentário
Compartilhar em outros sites

  • 0

Acredito que fazer uma pesquisa sobre File I/O e Structs irão lhe fazer um bem... :rolleyes:

O difícil é estabelecer um padrão para a leitura... O que separa a linha das leituras é um espaço...

Você teria que montar algum esquema com File I/O para ler caracter a caracter e quando detectar um espaço armazenar o que foi lido...

Link para o comentário
Compartilhar em outros sites

  • 0
Ola Felipe e Pessoal, bom dia!

Como eu poderia então elaborar funções para tratamento de arquivos.

Não existe algum site que mostre exemplos para tratar arquivos txt com delimetadores e jogar para uma matriz por exemplo??

Obrigado

Paz e bem!

não sei se tem,

isso até da um pouco de trabalho mas não é muito complicado, ve se isso te ajuda:

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

FILE *fp;
char *str1 = "/root/scripts/entrada.txt";
char c;
char pega[255], p1[255], p2[255], p3[255];
int i=0,j=0;

int main() {

   fp=fopen(str1,"r+"); //abre o arquivo
   if(fp==NULL)
      fp=fopen(str1,"w+");

   fgets(pega, 255, fp); //pega uma linha do arquivo e joga em pega limite de 255 caracteres
   c=pega[i]; // primeiro caracter é passado para c
   while(c!='\' && c!=' '){ enquanto c for diferente de fim de string e espaco em branco
         p1[i]=c; // vou copiando o conteudo da linha no primeiro vetor
         i++;
         c=pega[i];
   }
   p1[i]='\'; // fim de string
   printf("%s\n",p1);

   i++; //proximo
   c=pega[i]; 
   j=0; // variavel que vai controlar os vetores 2 e 3
   while(c!='\' && c!=' '){ // mesma coisa
         p2[j]=c; // vai copiando
         i++; // percebe que i esta percorrendo a variavel pega
         j++; // e j esta percorrendo o vetor
         c=pega[i];
   }
   p2[j]='\';
   printf("%s\n",p2);

   i++; // proximo
   c=pega[i];
   j=0;
   while(c!='\' && c!=' '){
         p3[j]=c;
         i++;
         j++;
         c=pega[i];
   }
   p3[j]='\';
   printf("%s\n",p3);
   return 0;
}

fiz bem simples pra voce poder entender passo-a-passo.

Obs: está com erro na formatacao o "0" apos o "\" esta sumindo

então lembre-se ele é usado nos "whiles" e no fim da leitura.

abraco!!! :rolleyes:

Editado por kandrade
Link para o comentário
Compartilhar em outros sites

  • 0
Na verdade o objetivo é verificar um pouco da experiência em C, visto que utilizarei o mesmo durante o mestrado do qual estou cursando.

Não vejo nada de errado buscar informações em fórum... Mas se você faz mestrado mesmo é melhor aprender o que eu recomendei... Structs e File I/O... Assim você não fica dependente...

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...