semsunga 0 Denunciar post Postado Maio 16, 2014 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
_Isis_ 202 Denunciar post Postado Maio 18, 2014 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