Leitura de arquivo texto separando as colunas

Publicado por euteste da silva (última atualização em 15/01/2013)

[ Hits: 8.475 ]

Download processainfo.c




Fiz um programa C que faz a leitura de um arquivo e processa os valores da coluna. O arquivo entrada.txt tem o seguinte valor:

Codigo:Produto:Unidade:Preco
1:melao:1:2.50
2:laranja:2:0.50
3:uva:2:1.00

O programa faz a quebra da coluna quando encontra o caracter ":".

Eu espero que seja útil para alguém. =)

* Todo o programa foi feito utilizando o tinyC compiler.

  



Esconder código-fonte

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

typedef struct reg {
    char codigo;
    char produto[20];
    int unidade;
    float preco;
    float valor;
} REGISTRO;

#define MAX_LINE 100

main() {

    FILE *fp;
    char buf[100];
    char *pstr;
    REGISTRO vetReg[MAX_LINE];
    time_t localtime;
    int i,j;        

    j=i=0;
    float soma=0;

    fp = fopen("entrada.txt","r");
    if(!fp)
      exit(1);
     
     // Pula o cabecalho.
     fseek(fp,30,SEEK_SET); 
      
         
     while((fgets(buf,100,fp)!=NULL) && (i<MAX_LINE)) {

        pstr = strtok(buf,":");
        vetReg[i].codigo = *pstr;

        pstr = strtok(NULL,":");
        strcpy(vetReg[i].produto,pstr);

        pstr = strtok(NULL,":");
        vetReg[i].unidade = atoi(pstr); 

        pstr = strtok(NULL,":");
        vetReg[i].preco = atof(pstr);
                
        vetReg[i].valor = vetReg[i].unidade * vetReg[i].preco;
       
        soma+=vetReg[i].valor;

        ++i;
    }
  
    fclose(fp);

    localtime = time(NULL);
    printf(ctime(&localtime));
    printf("\n");

    printf("%s%10s%10s%10s%10s\n","Codigo","Produto","Unidade","Preco","Valor");
    printf("%s%10s%10s%10s%10s\n","------","-------","-------","-----","-----");

    for(j=0; j<i; j++) { 

       printf("%c",vetReg[j].codigo);
       printf("%15s",vetReg[j].produto);
       printf("%10d",vetReg[j].unidade);
       printf("%10.2f",vetReg[j].preco);
       printf("%10.2f\n",vetReg[j].valor);
    }
    printf("----------------------------------------------\n");
    printf("%42s%.2f\n","Total: ",soma);

}

Scripts recomendados

Cadastro de Alunos

Cadastor de Produtos em C e metodos ordenação

Barra de progresso em forma de “roda”

Manipulaçao de arquivos e Meta dados em videos

Editar o arquivo /etc/rc.d/rc.local


  

Comentários
[1] Comentário enviado por oberdandebona em 21/06/2015 - 22:03h

Boa Noite! Meu caro esse código vai me ser muito útil o problema é que ele não esta executando! precisava dele rodando, se por gentileza puder acerta-lo


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts