Leitura de arquivo texto separando as colunas
Publicado por euteste da silva (última atualização em 15/01/2013)
[ Hits: 10.813 ]
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);
}
Programa CONSULTA/ PESQUISA/ ADICIONA/ EXCLUI registros em arquivos
Conversão integral de textos em letras maiúsculas
Conversão de arquivos texto entre Windows e Linux
Jogando Daikatana (Steam) com Patch 1.3 via Luxtorpeda no Linux
LazyDocker – Interface de Usuário em Tempo Real para o Docker
Instalando COSMIC no Linux Mint
Turbinando o Linux Mint: o poder das Nemo Actions
Inteligência Artificial no desenvolvimento de software: quando começar a usar?
O widget do Plasma 6 Área de Notificação
[Resolvido] Algo deu errado ao abrir seu perfil
Instalar Dual Boot, Linux+Windows. (12)
Problemas com o "startx&... no Slackware (10)
Conselho distribuiçao brasileira (8)
Atalho no Linux Mint não aparece menu de troca de monitores (0)









