Meu programa abaixo esta com o seguinte problema  Até agora de pouco eu estava conseguindo cadastrar tudo, fazer alterações tudo certinho. Derrepente sem eu nem mecher no código(o que até parece estranho para voce que esta lendo), meu programa começou a fazer atualizaçoes todas incorretas.  Primeiro ele funcionava direitinho, depois de alguns minutos ele começou a dar pau sem mecher no código.. Sera que isto é problema com sujeira no buffer ou algo do tipo ?  Se puderem me ajudar, é só copiar e colocar este programa no C++ que ele funciona certinho, só não sei se ele vai dar  o mesmo problema que aqui  em casa !  Obrigado            #include<stdio.h> #include<conio.h> #include<stdlib.h>  struct cliente{                int codigocliente,numerocliente;        char nomecliente[100],enderecocliente[100],exccliente;                        };// fim da struct cliente  struct bolo{        float precobolo;        int codigobolo, quantidadebolo;        char nomebolo[100],excbolo;                 };//Fim da struct bolo  struct pedido{         int codigopedido,pcodigocliente,pcodigobolo,pquantidadebolo;        float valortotalpedido;        char pnomecliente, pnomebolo,excpedido;         };//fim da struct pedido  FILE *cliente1; FILE *bolo1; FILE *pedido1;    //função para verificar se o cod cliente já existe struct cliente verificaCliente(int cod){                int achou_reg = 0;        cliente procura;        fseek (cliente1, 0, SEEK_SET);                while (! feof (cliente1) && (!achou_reg) ){              fread (&procura, sizeof(struct cliente), 1, cliente1);              if((procura.codigocliente == cod) && (procura.exccliente != '*'))                      achou_reg = 1;              }              return procura;                 }// fim da função verificaCliente  //função para verificar se o codbolo já existe struct bolo verificaBolo(int cod){                int achou_reg = 0;        bolo procura;        fseek (bolo1, 0, SEEK_SET);                while (! feof (bolo1) && (!achou_reg) ){              fread (&procura, sizeof(struct bolo), 1, bolo1);              if((procura.codigobolo == cod) && (procura.excbolo != '*'))                      achou_reg = 1;              }              return procura;                 }// fim da função verificaBliente  struct pedido verificaPedido(int cod){         int achou_reg = 0;        pedido procura;        fseek (pedido1, 0, SEEK_SET);                while (! feof (pedido1) && (!achou_reg) ){              fread (&procura, sizeof(struct pedido), 1, pedido1);              if((procura.codigopedido == cod) && (procura.excpedido != '*'))                      achou_reg = 1;              }              return procura;          }// fim da função verificaPedido     int main()   {     //declaração das variáveis     int opcao,codigocliente,codigobolo,codigopedido;               //criando o arquivo caso não tenha, e se tiver ele abre o arquivo para depois efetuar pesquisas     if((cliente1 = fopen("d:cliente.dat","r+")) == NULL)         cliente1 = fopen("d:cliente.dat","w+");            if((bolo1 = fopen("d:bolo.dat","r+")) == NULL)         bolo1 = fopen("d:bolo.dat","w+");              if((pedido1 = fopen("d:pedido.dat","r+")) == NULL)         pedido1 = fopen("d:pedido.dat","w+");              //criando as referencias     cliente c;     bolo b;     pedido p;          printf("\n 1 - Cadastrar cliente\n 2 - Cadastrar Bolo\n 3 - Cadastrar Pedido \n 6 - Cliente Cadastrado\n 7 - Bolo Cadastrado \n 8 - Pedidos Cadastrados\n");     fflush(stdin);     scanf("%i",&opcao);          while(opcao != 0){            switch (opcao){                     case 1: {                                //colocando o apontador no fim do arquivo                fseek(cliente1,0,SEEK_END);                                printf("\nDigite o codigo do cliente\n");                fflush(stdin);                scanf("%i",&codigocliente);                                   while(codigocliente < 0){                    printf("\nCodigo não pode ser menor que 0\n Digite novamente: ");                    fflush(stdin);                    scanf("%i",&codigocliente);                   }//Fim do codigocliente < 0                                      //verifica se o código do cliente já existe                   c = verificaCliente(c.codigocliente);                                      while(codigocliente > 0){                    fflush(stdin);                    c = verificaCliente(codigocliente);  // funcao                      if(c.codigocliente == codigocliente){                           printf("Codigo já cadastrado!\n");                           printf("Codigo do Cliente: ");                           fflush(stdin);                           scanf("%i",&codigocliente);                       }//fim do if                                       else{                            c.codigocliente = codigocliente;                            break;                        }//fim do else                    }//fim do while                                                                                      printf("\nDigite o nome \n");                fflush(stdin);                gets(c.nomecliente);                                printf("\nDigite o endereco \n");                fflush(stdin);                gets(c.enderecocliente);                                printf("\nDigite o numero \n");                fflush(stdin);                scanf("%i",&c.numerocliente);                                fseek(cliente1,0,SEEK_END);                fwrite(&c,sizeof(struct cliente),1,cliente1);                                                break;                           }//Fim do case 1                             case 2:{                          fseek(bolo1,0,SEEK_END);                                printf("\nDigite o codigo do bolo \n");                fflush(stdin);                scanf("%i",&codigobolo);                                while(codigobolo < 0){                    printf("\nCodigo não pode ser menor que 0\nDigite novamente: ");                    fflush(stdin);                    scanf("%i",&codigobolo);                   }//Fim do codigocliente < 0                                //chamando a função                b = verificaBolo(codigobolo);                                 while(codigobolo > 0){                    fflush(stdin);                    b = verificaBolo(codigobolo);  // funcao                      if(b.codigobolo == codigobolo){                           printf("Codigo já cadastrado!\n");                           printf("Codigo do Bolo: ");                           fflush(stdin);                           scanf("%i",&codigobolo);                       }//fim do if                                       else{                            b.codigobolo = codigobolo;                            break;                        }//fim do else                    }//fim do while                                                                printf("\nDigite o nome \n");                fflush(stdin);                gets(b.nomebolo);                                printf("\nDigite a quantidade\n");                fflush(stdin);                scanf("%i",&b.quantidadebolo);                                  while(b.quantidadebolo < 0){                    printf("Quantidade invalida\n Digite novamente");                    fflush(stdin);                    scanf("%i",&b.quantidadebolo);                                                         }//fim while quantidade bolo < 0                                printf("\nDigite o preço\n");                fflush(stdin);                scanf("%f",&b.precobolo);                                      while(b.precobolo < 0){                    printf("Valor invalido\n Digite novamente");                    fflush(stdin);                    scanf("%i",&b.precobolo);                                                         }// Fim do while b.precobolo < 0                                                          fseek(bolo1,0,SEEK_END);               fwrite(&b,sizeof(struct bolo),1,bolo1);                                          break;                           }//Fim do case 2                case 3:{                                fseek(pedido1,0,SEEK_SET);                                printf("\nDigite o codigo do pedido\n");                fflush(stdin);                scanf("%i",&codigopedido);                                  while(codigopedido < 0){                                    printf("Codigo invalido\nDigite novamente: ");                  fflush(stdin);                  scanf("%i",&codigopedido);                                    }//fim do while codigopedido <0                                                             //chamando a função para verificar se o código do pedido já existe                                                     while(codigopedido > 0){                    fflush(stdin);                    p = verificaPedido(codigopedido);  // funcao                      if(p.codigopedido == codigopedido){                           printf("Codigo já cadastrado!\n");                           printf("Codigo do Bolo: ");                           fflush(stdin);                           scanf("%i",&codigopedido);                       }//fim do if                                       else{                            p.codigopedido = codigopedido;                            break;                        }//fim do else                    }//fim do while                                        printf("\nCodigo do Cliente: ");                    fflush(stdin);                    scanf("%i",&codigocliente);                                                                                             do{                          //verificando se o cliente existe                          c = verificaCliente(codigocliente);                                                                            if(c.codigocliente != codigocliente){                               printf("\nCliente não encontrado\n");                               fflush(stdin);                               scanf("%i",&codigocliente);                             }// fim do if                                                     }while(c.codigocliente != codigocliente);                                                  p.pcodigocliente = codigocliente;                                              printf("\nCodigo do bolo: ");                       fflush(stdin);                       scanf("%i",&codigobolo);                                                 do{                             //verificando se o bolo existe ou não                             b = verificaBolo(codigobolo);                                                            if(b.codigobolo != codigobolo){                                  printf("\nBolo não encontrado: ");                                  fflush(stdin);                                  scanf("%i",&codigobolo);                                                                           }// fim do if                                                          }while(b.codigobolo != codigobolo);                                                                                                             p.pcodigobolo = codigobolo;                                                     do{                  printf("\nA quantidade  do estoque %i",b.quantidadebolo);               printf("\nQuantidade :");               fflush(stdin);               scanf("%i",&p.pquantidadebolo);                 if( p.pquantidadebolo > b.quantidadebolo)                 {printf("\n\aA quantidade invalida!!!"); }                } while(( p.pquantidadebolo > b.quantidadebolo));                // tira a quantiade de bolos vendidos                b.quantidadebolo= b.quantidadebolo - p.pquantidadebolo;                              // calcula o preço do bolo                p.valortotalpedido = b.precobolo * p.pquantidadebolo ;                             printf("\nPreco Total : %8.2f ",p.valortotalpedido);                                                                                      //aqui esta com erro !                   fseek(bolo1,ftell(bolo1) - sizeof(struct bolo),0);               fwrite(&b,sizeof(struct bolo),1,bolo1);                                              fseek(pedido1,0,SEEK_END);                fwrite(&p,sizeof(struct pedido),1,pedido1);                                       fflush(stdin);                       getchar();                                      break;             }//Fim do case 3                                                                             case 6:{                                system("cls");                fseek(cliente1,0,SEEK_SET);                while(fread(&c,sizeof(struct cliente),1,cliente1) == 1 )                 printf("\n Codigo cliente: %i \n Nome cliente: %s \n Endereco cliente: %s \n Numero: %i\n", c.codigocliente,c.nomecliente,c.enderecocliente,c.numerocliente );                                fflush(stdin);                getchar();                break;           }//Fim do case 6                      case 7:{                         system("cls");                fseek(bolo1,0,SEEK_SET);                while( fread (&b,sizeof(struct bolo),1,bolo1) == 1 )                 printf("\n\nCodigo bolo: %i\nNome : %s\nQuantidade: %i\nPreco: %8.2f\n",b.codigobolo,b.nomebolo,b.quantidadebolo,b.precobolo);                                fflush(stdin);                getchar();                                break;           }//Fim do case 7                      case 8:{                          system("cls");                fseek(pedido1,0,SEEK_SET);                                while( fread (&p,sizeof(struct pedido),1,pedido1) == 1 )                 printf("\nCodigo pedido: %i \nCodigo bolo: %i \nCodigo cliente: %i \nPreco pedido: %8.2f \n",p.codigopedido,p.pcodigobolo,p.pcodigocliente,p.valortotalpedido);                                                                                          fflush(stdin);                getchar();                          break;           }//fim do case 8                     }// fim do switch             system("cls");             printf("\n 1 - Cadastrar cliente\n 2 - Cadastrar Bolo\n 3 - Cadastrar Pedido \n 6 - Cliente Cadastrado\n 7 - Bolo Cadastrado \n 8 - Pedidos Cadastrados\n");             fflush(stdin);             scanf("%i",&opcao);       }//fim do while opcao   fclose(cliente1);   fclose(bolo1);      }// Fim da main