Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

semsunga

Problema com sistema de busca - Struct

Recommended Posts

Tentei diversas formas e até agora não encontrei esse erro... Depois do cadastro, a primeira vez ele não encontra o nome, a partir da segunda sim, e quando vou buscar pelo nome, lista o arquivo todo. Se alguém puder me ajudar eu agradeço. Segue abaixo o código: (Ignorem o </code> no final).

#include
#include
#include

int main(){

typedef struct cadastro{

char nome[30];
char nomes[30];
char dt_compra[30];
char dt_pagamento[30];
char tel_fixo[20];
char tel_cel[20];
char endereco[50];


}STcadastro;

int opcao;
STcadastro cad;

Menu:


printf("Menu \n");
printf("1 - Cadastrar Cliente \n");
printf("2 - Consultar telefone do cliente \n");
printf("0 - Sair \n");
printf("Escolha a opcao: \n");
scanf ("%i",&opcao);

if(opcao==0){

puts("Voce saiu do programa");

}

FILE * cadastrocliente;

cadastrocliente = fopen("cadastro_cliente.txt","a");
// }

// while(opcao != 0);

switch (opcao){

case 1:

fflush(stdin);

struct cadastro;

while(opcao==1){

fflush(stdin);

puts("Nome do Cliente: \t");
gets(cad.nome);
strcat(cad.nome,"\n");
fputs(cad.nome,cadastrocliente);


fflush(stdin);

puts("Data da compra: \t");
gets(cad.dt_compra);
strcat(cad.dt_compra,"\n");
fputs(cad.dt_compra,cadastrocliente);

fflush(stdin);

puts("Data do pagamento: \t");
gets(cad.dt_pagamento);
strcat(cad.dt_pagamento,"\n");
fputs(cad.dt_pagamento,cadastrocliente);

fflush(stdin);

puts("Telefone fixo: \t");
gets(cad.tel_fixo);
strcat(cad.tel_fixo,"\n");
fputs(cad.tel_fixo,cadastrocliente);

fflush(stdin);

puts("Telefone celular: \t");
gets(cad.tel_cel);
strcat(cad.tel_cel,"\n");
fputs(cad.tel_cel,cadastrocliente);

fflush(stdin);

puts("Endereco: \t");
gets(cad.endereco);
strcat(cad.endereco,"\n");
fputs(cad.endereco,cadastrocliente);

fflush(stdin);

fclose(cadastrocliente);

puts("Deseja cadastrar um novo cliente? 1- Sim , 2- Nao");
scanf("%i",&opcao);

printf("\n");

system("cls");

if(opcao==2){

goto Menu;

}


}
break;

case 2:

fflush(stdin);
puts("Digite o nome para a busca");
gets(cad.nomes);

FILE * cadastrocliente;

cadastrocliente = fopen("cadastro_cliente.txt","r");

while(fgets(cad.nome,sizeof(cad.nome),cadastrocliente)!=NULL){

if((strstr(cad.nomes,cad.nome))==0){

printf(cad.nome);

}


else
{

printf("Esse nao e o nome");
}

}
break;
}
system("pause");
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não use fflush na entrada padrão.

Não use gets.

Não use system("pause").

Evite o uso do goto.

 

Por que existem loops com as mesmas condições do switch dentro do switch?

 

Sinceramente, o código está confuso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.