Leitura de arquivo texto separando as colunas
Publicado por euteste da silva (última atualização em 15/01/2013)
[ Hits: 10.445 ]
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.
#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); }
leitura/escrita de dados/estruturas em arquivo
Cadastro de arquivo usando ncurses como menu
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Flatpak: remover runtimes não usados e pacotes
Mudar o gerenciador de login (GDM para SDDM e vice-versa) - parte 2
Como atualizar o Debian 8 para o 10 (10)
Dica sobre iptables ACCEPT e DROP (6)
NGNIX - Aplicar SNAT para evitar roteamento assimetrico (29)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta