Jump to content


Photo

Urgente....duvida Em C


  • Faça o login para participar
Nenhuma resposta neste tópico

#1 Andre_seduc

Andre_seduc

    Turista

  • Usuários
  • 38 posts
  • Sexo:Não informado

Posted 20/09/2007, 13:28

bem
tenho que desenvolver um programa que a partir da leitura de dois arquivos(pedidos.txt, supermercado.txt), seja gerado um arquivo chamado notasfiscais.txt.

arquivo supermercado.txt contem em cada linha o codigo e o preco de um determinado produto.
ex:

1 1.20
2 2.30
3 4.50


arquivo pedidos.txt na 1ªlinha o numero de clientes que fizeram o pedido,na proxima linha tem o numero de pedidos, e nome do cliente,e nas seguintes tem o codigo e quantidade
ex:
2
2 andre
3 4
1 2
2 alex
2 2
3 1

agora tenho que ler esses dois arquivos e gerar um terceiro nesse padrão
cliente:
Cliente: andre
Codigo Qtd Preco Unitario Preco Total
3 4 2.17 8.68
5 5 0.78 3.90
Total Geral: 12.58

Cliente: alex
Codigo Qtd Preco Unitario Preco Total
2 1 4.41 4.41
3 2 2.17 4.34
Total Geral: 8.75
---------------------------------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

//-----------começo-------------------
int main(){

int i = 0, j = 0, k = 0, l = 0;
int cont = 0;

char *p, *d;

int ncliente = 0;
char count[100];

//supermercado
int cod[50];
float preco[50];
char linha[100];

//pedidos
char cliente[100];
char conta[100];
int pedido[50];

//-----------arquivos---------------------
FILE *sp;
FILE *pd;
FILE *nf;

sp = fopen("supermercado.txt", "r");
pd = fopen("pedidos.txt", "r");
nf = fopen("notas.txt", "w");

//-----tratamento de erros------------------
if((!sp) || (!nf)) {
printf("erro");
exit(1);
}

while( !feof(sp) ) {
fgets(linha,12,sp);
fputs("Preco:",nf);
p = strstr(linha," ");
preco[i] = atof(p);
fputs(p, nf);
fputs("\n",nf);
i++;
}

rewind(sp);

while( !feof(sp) ) {
fputs("Codigo: ", nf);
fgets(linha,2, sp);
cod[k] = atoi(linha);
fputs(linha, nf);
fputs("\n", nf);
fgets(linha,10, sp);
strcat(linha,"\n");
k++;
}



printf("Codigo\tPreco\n");

for(j = 0; j < i; j++){
printf("%d \t %2.2f \n",cod[j],preco[j]);
}


fclose(sp);
fclose(nf);

printf("\n\tArquivo da Nota Fiscal foi criado!\n");

//------------pausa tela---------------------------
system("pause");

//---------------fim-------------------------------
return 0;
}
----------------------------------------------------------------------------------------
a pergunta é, como devo ler, linha por linha,veja que no primeiro arquivo(supermercado.txt) é facil por motivo pois tem um padrão, mas o pedidos.txt é complicado,como saber que linha estamos lendo. fica complicado.


com isso eu consigo ler o preco,pois a função me retorna tudo que estiver depois do espaço.
while( !feof(sp) ) {
fgets(linha,12,sp);//lendo 12 caracteres
fputs("Preco:",nf);
p = strstr(linha," ");
preco[i] = atof(p);
fputs(p, nf);
fputs("\n",nf);
i++;
}
retorno: 1.20
----------------------------------------------------------------------------------------------------
mas no arquivo pedidos.txt não há um padrão.
2
2 andre
como fazer para ler só determinada linha?
como saber em que linha estou lendo?
como separar adequadamente em jogar para um vetor o resultado?



me ajudem,com algum exemplo ou algo assim...


desde já agradeço..........




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq