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