Ir para conteúdo
Fórum Script Brasil

brunonoia

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Tudo que brunonoia postou

  1. Galera já não sei mais o que fazer eu to tentando fazer o programa ele compila e grava o cadastro mas na hora de lista os cadastros ele apaga o nome. vou mandar todo o codigo para que fique mas fácil de visualizar o erro. #include <stdio.h> #include <string.h> #include <stdlib.h> #include <conio.h> #include <ctype.h> typedef struct dados { char endereco[80]; char cidade[80]; char estado[2]; char nome[100]; char profissao[30]; char nascimento[15]; char bairro[30]; }T_dados; T_dados d[300]; // prototipos void inclusao(void); void Listar(void); void quick_struct(int); void qs_struct(int,int); void ordenar(void); void pesquisar(void); char Validaresp(); static int qtd = 0; FILE *fp; // ================================================================= // ======Incluir dados no arquivo ================================== void inclusao(void){ int total = 0, retorno; char op = 's'; if ((fp = fopen("agenda.db", "a")) == NULL) { printf ("O arquivo da lista não pode ser aberto!\n"); printf ("Insira dados!\n"); getch(); exit(1); } while ((total < 300) && (op == 's')) { printf ("Digite o nome: "); gets(d[total].nome); fflush(stdin); printf("Digite a data de nascimento:"); gets(d[total].nascimento); fflush(stdin); printf ("Digite a cidade: "); gets(d[total].cidade); fflush(stdin); printf ("Digite a UF do estado: "); gets(d[total].estado); fflush(stdin); printf("Digite o bairro: "); gets(d[total].bairro); fflush(stdin); printf ("Digite o endereco: "); gets(d[total].endereco); fflush(stdin); printf ("Digite a profissao: "); gets(d[total].profissao); fflush(stdin); retorno = fwrite (&d[total], sizeof(struct dados) ,1,fp); if (retorno == 1) { printf(" \nGravacao ok ! "); } total++; op = Validaresp(); qtd++; } fclose (fp); } //====================================================================== // ======Valida resposta =============================================== char Validaresp() { char op; do { printf(" \nDeseja inserir novos dados? [S ou N] ? " ); op = getch(); printf("\n" ); } while (op != 's' && op != 'n'); return op; } //====================================================================== // ======Organizar em ordem alfabetica ================================= void ordenar(void){ T_dados vet; int aux,i,j,k,retorno; char *str, *str2, *straux; if ((fp = fopen("agenda.db", "w+")) == NULL){ printf ("ERRO!\n"); getch(); exit(1); } aux = qtd; // aux recebe a quantidade de contatos inscritos for ( i = aux ; i <0 ; i-- ){ str = d.nome; for ( j = i-1 ; j <=0 ; j-- ){ str2 = d[j].nome; if ( strcmp ( str, str2 )> 0 ){ vet = d; d = d[j]; d[j] = vet; } } } for ( k = 0 ; k < aux ; k++ ){ retorno = fwrite (&d[k], sizeof(struct dados) ,1,fp); if (retorno != 1) { printf(" \nERRO ! "); } } fclose(fp); printf("\nLista Ordenada! \n"); getch(); } //====================================================================== // ======Pesquisar pelo nome =================================== void pesquisar(void){ int indice = 0, retorno = 1, cont = 0; char nome[80],op; if ((fp = fopen("agenda.db", "r")) == NULL){ printf ("O arquivo da lista não pode ser aberto!\n"); printf ("Insira dados!\n"); getch(); exit(1); } printf ("Digite o nome: "); gets(nome); retorno = fread(&d[indice], sizeof(struct dados), 1, fp); while (retorno == 1){ if (strcmp(nome, d[indice].nome) == 0 ){ printf ("\nNome ..: %s\nEndereco ..: %s\nCidade ..: %s\nEstado..:%s\nProfissao..:%s\nNascimento..:%s\nBairro..:%s", d[indice].nome, d[indice].endereco, d[indice].cidade,d[indice].estado,d[indice].profissao,d[indice].nascimento,d[indice].bairro); cont++; } indice++; retorno = fread(&d[indice], sizeof(struct dados), 1, fp); } if(cont == 0){ printf("não há contatos com este nome!\n"); } getch(); fclose(fp); } //====================================================================== // ======Pesquisar Nascimento ============================================ void pesquisarnascimento(void){ int indice = 0, retorno = 1, cont = 0; char nascimento[15],op; if ((fp = fopen("agenda.db", "r")) == NULL){ printf ("O arquivo da lista não pode ser aberto!\n"); printf ("Insira dados!\n"); getch(); exit(1); } printf ("Digite o nascimento: "); gets(nascimento); retorno = fread(&d[indice], sizeof(struct dados), 1, fp); while (retorno == 1){ if (strcmp(nascimento, d[indice].nascimento)==0){ printf ("%s\nNome ..: %s\nEndereco ..: %s\nCidade ..: %s\nEstado..:%s\nProfissao..:%s\nNascimento..:%s\nBairro..:", d[indice].nome, d[indice].endereco, d[indice].cidade,d[indice].estado,d[indice].profissao,d[indice].nascimento,d[indice].bairro); cont++; } indice ++; retorno = fread(&d[indice], sizeof(struct dados), 1, fp); } if(cont == 0){ printf("não há contatos com este Nascimento!\n"); } getch(); fclose(fp); } //====================================================================== // ======Lista os contatos cadastrados ================================= void Listar(void){ int i = 0, retorno; if ((fp = fopen("agenda.db", "r")) == NULL) { printf ("O arquivo da lista não pode ser aberto!\n"); printf ("Insira dados!\n"); getch(); exit(1); } retorno = fread(&d, sizeof(struct dados), 1, fp); // fread retorna a quantidade de itens ... while ( retorno == 1) { printf("\n Nome ..: %s", d.nome); printf("\n Nadcimento ..: %s", d.nascimento); printf("\n Cidade ..: %s", d.cidade); printf("\n Estado ..: %s", d.estado); printf("\n Bairro..:%s", d.bairro); printf("\n Endereco ..: %s", d.endereco); printf("\n Profissao ..: %s\n", d.profissao); i++; retorno = fread(&d, sizeof(struct dados), 1, fp); } printf(" \n\n %d Contatos salvos!\n", i); getch(); fclose(fp); } //====================================================================== // ======Menu ========================================================== void menu(void){ char op; int teste; if ((fp = fopen("agenda.db", "r")) != NULL){ qtd = 0; do { teste = fread(&d, sizeof(struct dados), 1, fp); qtd++; }while ( teste == 1 ); qtd--; } do{ system("cls"); printf("\n(1)Incluir\n(2)Listar\n(3)Ordenar por nome\n(4)Pesquisar por nome\n"); printf("(5)Pesquisar por nascimento\n(6)Qualquer outra tecla para sair\n\n"); op = getch(); switch(op){ case '1': inclusao(); break; case '2': Listar(); break; case '3': ordenar(); break; case '4': pesquisar(); break; case '5': pesquisarnascimento(); break; default: exit(1); } }while (op < '6'); } int main (){ int var; printf("\n\n\n\n\n\n\n\n\n\n"); printf(" .::AGENDA ELETRONICA:. \n\n"); printf(" Veja todas as funcoes disponiveis no menu \n"); printf(" use os numeros para selecionar a opcao desejada \n"); printf(" pressione qualquer tecla para continuar ou ESC para sair do programa agora."); var=getch(); if(var == 300){ exit(1);} menu(); system("pause"); } Espero que alguém possa me ajudar. Obrigado
×
×
  • Criar Novo...