Olá, quero fazer com que o nome que digito(plaquinha) seja procurado no arquivo e caso exista printar na tela, mas não to conseguindo..
É um sistema de estacionamento!
Desde já, agradeço!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct
{
char placa[10];
char endereco[20];
char nome[20];
char cpf[20];
}Cliente;
typedef struct
{
float hora_entrada;
float hora_saida;
float data_entrada;
float data_saida;
}Controle;
void listar_carros(Cliente* s,Controle* c,int tam_vetor)
{
int listado;
int i;
FILE* arq;
arq = fopen("Clientes.txt","r");
for(i=0;i<tam_vetor;i++)
{
if((s.placa != NULL && c.hora_entrada != 0))
{
fgets(s.placa,sizeof(s.placa),arq);
fflush(stdin);
printf("Numero da placa: %s\n",s.placa);
fgets(s.endereco,sizeof(s.endereco),arq);
fflush(stdin);
printf("Endereco: %s\n",s.endereco);
fgets(s.nome,sizeof(s.nome),arq);
fflush(stdin);
printf("Nome: %s\n",s.nome);
fgets(s.cpf,sizeof(s.cpf),arq);
fflush(stdin);
printf("CPF: %s\n",s.cpf);
fflush(stdin);
fscanf(arq,"%f",&c.hora_entrada);
printf("Hora de entrada: %f \n",c.hora_entrada);
fscanf(arq,"%f",&c.data_entrada);
printf("Data de entrada: %f \n",c.data_entrada);
fscanf(arq,"%f",&c.hora_saida);
printf("Hora de saida: %f \n",c.hora_saida);
fscanf(arq,"%f",&c.data_saida);
printf("Data de saida: %f \n",c.data_saida);
printf("\n");
++listado;
}
}
if(listado == 0)
{
printf("Nenhum carro cadastrado!\n");
}
fclose(arq);
}
void entrada_carro(Cliente* s,Controle *c,int tam_vetor)
{
int i,listado,count = 0;
for(i=0;i<tam_vetor;i++)
{
if(s.placa != NULL)
{
++count;
break;
}
}
if(count == 0)
{
printf("não e possivel cadastrar mais funcionarios\n\n");
return;
}
for(i=0;i<tam_vetor;i++)
{
printf("Numero da placa: \n");
fflush(stdin);
gets(s.placa);
fflush(stdin);
printf("Endereco: \n");
fflush(stdin);
gets(s.endereco);
printf("Nome: \n");
fflush(stdin);
gets(s.nome);
printf("CPF: \n");
fflush(stdin);
gets(s.cpf);
printf("Hora de entrada (hh.mm): \n");
scanf("%f",&c.hora_entrada);
printf("Data de entrada (dd.mm.aaaa): \n");
scanf("%f",&c.data_entrada);
fflush(stdin);
printf("Cliente cadastrado!\n");
break;
}
}
void arquivar(Cliente* s,Controle* c,int tam_vetor)
{
int i,taxa,valor;
float taxa_final,taxa_final1,taxa_final2,soma1,soma2;
FILE* arq;
arq = fopen("Clientes.txt","a");
for(i=0;i<tam_vetor;i++)
{
fprintf(arq,"Numero da placa: %s\n",s.placa);
fprintf(arq,"Endereco: %s\n",s.endereco);
fprintf(arq,"Nome: %s\n",s.nome);
fprintf(arq,"CPF: %s\n",s.cpf);
fprintf(arq,"Hora de entrada: %f \n",c.hora_entrada);
fprintf(arq,"Data de entrada: %f \n",c.data_entrada);
fprintf(arq,"Hora de saida: %f \n",c.hora_saida);
fprintf(arq,"Data de saida: %f \n",c.data_saida);
soma1 = c.hora_saida - c.hora_entrada;
soma2 = c.data_saida - c.data_entrada;
if(soma2 == 0)
{
taxa = 0;
}
else
{
taxa = 1;
}
if(soma1 <= 3)
{
if(taxa == 0)
{
valor = 3;
fprintf(arq,"Valor a ser pago é: %d\n",valor);
}
else if(taxa == 1)
{
taxa_final = (5*soma2)+3;
fprintf(arq,"Valor a ser pago é: %f\n",taxa_final);
}
}
else if (soma1 > 3)
{
if(taxa == 0)
{
taxa_final1 = (soma1 - 3)*9;
fprintf(arq,"Valor a ser pago: %f\n",taxa_final1);
}
else if(taxa == 1)
{
taxa_final2 = taxa_final1 + taxa_final1;
fprintf(arq,"Valor a ser pago: %f\n",taxa_final2);
}
}
fprintf(arq,"\n");
}
fclose(arq);
}
void saida_carro(Cliente* s,Controle* c,int tam_vetor)
{
int i,exist,soma1,soma2,taxa;
int valor = 3;
float taxa_final,taxa_final1,taxa_final2;
char *plaquinha;
plaquinha = (char*)malloc(20*sizeof(char));
printf("Digite a placa do carro: \n");
fflush(stdin);
gets(plaquinha);
fflush(stdin);
for(i=0;i<tam_vetor;i++)
{
if(strcmp(plaquinha,s.placa) == 0)
{
++exist;
do
{
printf("\t\tCarro encontrado\n\n");
printf("Numero da placa: %s\n",s.placa);
printf("Endereco: %s\n",s.endereco);
printf("Nome: %s\n",s.nome);
printf("CPF: %s\n",s.cpf);
printf("Hora de entrada: %f \n",c.hora_entrada);
printf("Data de entrada: %f \n",c.data_entrada);
printf("\n");
printf("\n\n**Cadastrar saida**\n\n");
printf("Hora de saida (hh.mm): \n");
scanf("%f",&c.hora_saida);
fflush(stdin);
printf("Data de saida (dd.mm.aaaa): \n");
scanf("%f",&c.data_saida);
fflush(stdin);
printf("\nHorario de saida cadastrado!\n");
printf("\n");
soma1 = c.hora_saida - c.hora_entrada;
soma2 = c.data_saida - c.data_entrada;
if(soma2 == 0)
{
taxa = 0;
}
else
{
taxa = 1;
}
if(soma1 <= 3)
{
if(taxa == 0)
{
valor = 3;
printf("Valor a ser pago é: %d\n",valor);
}
else if(taxa == 1)
{
taxa_final = (5*soma2)+3;
printf("Valor a ser pago é: %f\n",taxa_final);
}
}
else if (soma1 > 3)
{
if(taxa == 0)
{
taxa_final1 = (soma1 - 3)*9;
printf("Valor a ser pago: %f\n",taxa_final1);
}
else if(taxa == 1)
{
taxa_final2 = taxa_final1 + taxa_final1;
printf("Valor a ser pago: %f\n",taxa_final2);
}
}
return;
}while(1);
}
}
if(strcmp(plaquinha,s.placa) != 0)
{
printf("Nenhum carro cadastrado com essa placa!\n\n");
}
}
void proc_carro(Cliente* s,Controle* c,int tam_vetor)
{
int i,exist;
char *plaquinha;
plaquinha = (char*)malloc(20*sizeof(char));
printf("Digite a placa do carro: \n");
fflush(stdin);
gets(plaquinha);
fflush(stdin);
FILE* arq;
char str[20];
arq = fopen("Clientes.txt","r");
for(i=0;i<tam_vetor;i++)
{
if(strcmp(plaquinha,fgets(s.placa,sizeof(s.placa),arq)) == 0)
{
++exist;
do
{
printf("\t\tCarro encontrado\n\n");
fgets(s.placa,sizeof(s.placa),arq);
printf("Numero da placa: %s\n",s.placa);
fgets(s.endereco,sizeof(s.endereco),arq);
printf("Endereco: %s\n",s.endereco);
fgets(s.nome,sizeof(s.nome),arq);
printf("Nome: %s\n",s.nome);
fgets(s.cpf,sizeof(s.cpf),arq);
printf("CPF: %s\n",s.cpf);
fscanf(arq,"%f",&c.hora_entrada);
printf("Hora de entrada: %f \n",c.hora_entrada);
fscanf(arq,"%f",&c.data_entrada);
printf("Data de entrada: %f \n",c.data_entrada);
fscanf(arq,"%f",&c.hora_saida);
printf("Hora de saida: %f \n",c.hora_saida);
fscanf(arq,"%f",&c.data_saida);
printf("Data de saida: %f \n",c.data_saida);
return;
}while(1);
}
}
if(plaquinha,fgets(s.placa,sizeof(s.placa),arq) != 0)
{
printf("Carro não encontrado!\n");return;
}
fclose(arq);
}
void excluir_carro(Cliente* s,Controle* c,int tam_vetor)
{
int i,exist;
char *plaquinha;
plaquinha = (char*)malloc(20*sizeof(char));
printf("Digite a placa do carro: \n");
fflush(stdin);
gets(plaquinha);
fflush(stdin);
int lock = 1;
int exc;
for(i=0;i<tam_vetor;i++)
{
if(strcmp(plaquinha,(s+i)->placa) == 0)
{
++exist;
do
{
printf("\t\tCarro encontrado\n\n");
printf("Numero da placa: %s\n",s.placa);
printf("Endereco: %s\n",s.endereco);
printf("Nome: %s\n",s.nome);
printf("CPF: %s\n",s.cpf);
printf("Hora de entrada: %f \n",c.hora_entrada);
printf("Data de entrada: %f \n",c.data_entrada);
printf("Hora de saida: %f \n",c.hora_saida);
printf("Data de saida: %f \n",c.data_saida);
printf("\nTem certeza que deseja excluir esse carro? ");
printf("Digite 1 para sim e 0 para não: \n");
scanf("%d",&exc);
if(exc == 1)
{
strcpy(NULL,s.placa);
strcpy(NULL,s.endereco);
strcpy(NULL,s.nome);
strcpy(NULL,s.cpf);
c.hora_entrada = 0;
c.data_entrada = 0;
c.hora_saida = 0;
c.data_saida = 0;
lock = 0;
printf("\tCarro excluido!!\n");
}
else if(exc == 0)
{
break;
}
else
{
printf("Opcao invalida!\n");
}
}while(lock == 1);
}
else if(strcmp(plaquinha,s.placa) != 0)
{
printf("Carro não encontrado!\n");return;
}
}
}
int main()
{
int modo;
//Entrada de carros
Cliente cli[10];//vetor para clientes
Cliente* f;//ponteiro para clientes
f = cli;
//Entrada de controle de carros
Controle con[10];
Controle* c;
c = con;
do
{
printf("\t\tSistema de estacionamento\n\n");
printf("\tValor por dia: 5 reais\n");
printf("\tValor de 3 horas: 3 reais\n");
printf("\tValor adicional por hora(passando de 3 horas): 3 reais\n\n");
printf("//1 - Cadastrar carros\n");
printf("//2 - Saida de carros\n");
printf("//3 - Listar carros cadastrados\n");
printf("//4 - Procurar carros cadastrados\n");
printf("//5 - Excluir carros cadastrados\n");
printf("//0 - Sair\n");
printf("Digite a opcao desejada: ");
scanf("%d",&modo);
switch(modo)
{
case 0:
{
return 0;
}
case 1:
{
entrada_carro(f,c,10);
arquivar(f,c,10);
break;
}
case 2:
{
saida_carro(f,c,10);
arquivar(f,c,10);
break;
}
case 3:
{
listar_carros(f,c,10);
break;
}
case 4:
{
proc_carro(f,c,10);
break;
}
case 5:
{
excluir_carro(f,c,10);
arquivar(f,c,10);
break;
}
}
}while(1);