Leitura de arquivo texto separando as colunas
Publicado por euteste da silva (última atualização em 15/01/2013)
[ Hits: 10.545 ]
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); }
Codigo para criar arquivo de log
Programa CONSULTA/ PESQUISA/ ADICIONA/ EXCLUI registros em arquivos
Instalar e Configurar o Slackware Linux em 2025
Como configurar os repositórios do apt no Debian 12 em 2025
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Configurando o Conky para iniciar corretamente no sistema
3 configurações básicas que podem melhorar muito a sua edição pelo editor nano
Como colorir os logs do terminal com ccze
Instalação Microsoft Edge no Linux Mint 22
Como configurar posicionamento e movimento de janelas no Lubuntu (Openbox) com atalhos de teclado
driver do repositorio debian nao atende o requisito minimo (3)
Novo problema! Erro durante a arualização! (1)
Tenho um problama de quebra de pacote e não descobri como resolver [RE... (1)