Leitura de arquivo texto separando as colunas
Publicado por euteste da silva (última atualização em 15/01/2013)
[ Hits: 10.779 ]
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);
}
Manipulaçao de arquivos e Meta dados em videos
leitura/escrita de dados/estruturas em arquivo
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
fusermount3 no Ubuntu 25.10 - mantenha o perfil do AppArmor
[Resolvido] dlopen(): error loading libfuse.so.2 AppImages require FUSE to run.
Criação de diretórios e aplicação de restrições de acesso no Linux
diferença entre o Tor baixado pelo Gerenciador de Aplicativos e o Tor ... (1)
Podem me chamar de 1mbecil :) (2)
Debian Stable travado em atualizações: dist-upgrade não resolve [RESOL... (11)
Como ler fonte de um projeto? [RESOLVIDO] (5)
Perfil criado no samba ad dc não loga no Windows 10 e 11 [RESOLVIDO] (14)









