estou escrevendo dados em um arquivo binário. no entanto, preciso reeditar os parâmetros da struct "contato" no mesmo arquivo mediante valores de entrada digitados pelo usuário. 
consigo inserir e ler os arquivos normalmente por meio de outras funções. 
porém,  o "fwrite" da função abaixo (utilizada para reedição) não grava no arquivo (tentei imprimir diretamente da struct depois pra vê se tava ok e realmente o valor foi impresso). 
obs.: o arquivo é aberto na função main com "rb+". 
         preciso editar o arquivo na condição do "if(!strncmp(bus......." (que é quando é encontrado o parâmetro de busca do usuário no arquivo).   
void localiza_reg(){  
    int cont=1,parada=0; 
    struct contato c; 
    char busca[50],op;  
    printf("Buscar por: "); 
      gets(busca); 
      printf("\n"); 
      system("cls");  
    fseek(f,0,SEEK_SET);  
    do{ 
    fread(&c, sizeof(struct contato), 1, f); 
        if (feof(f)) 
        break; 
        if(!strncmp(busca,c.id.nome,strlen(busca)) || !strncmp(busca,c.id.sobrenome,strlen(busca))){ 
        parada++; 
       } 
    } while(!feof(f));  
system("cls"); 
rewind(f);   
    proximo:   
do{  
    fread(&c, sizeof(struct contato), 1, f); 
        if (feof(f)) 
        break;  
        if(!strncmp(busca,c.id.nome,strlen(busca)) || !strncmp(busca,c.id.sobrenome,strlen(busca))){  
        printf("registro %d/%d \n\n",cont,parada); 
        printf ("Nome: %s\n",c.id.nome); 
        printf ("Sobrenome: %s\n",c.id.sobrenome); 
        printf ("\n\n"); 
        printf ("Nova busca\n"); 
        printf ("Atualizar.\n\n"); 
        printf ("Selecione sua opcao.\n");        
        op = toupper(getch()); 
        system("cls"); 
        cont++;  
                switch(op){ 
                case 'N': 
                goto proximo;  
                case 'A': 
                      if (feof(f)) { 
                    printf("Registro não existente!\n"); 
                    return; 
                      }  
                  //DÚVIDA???????? 
                  printf ("nome: %s\n",c.id.nome); 
                  printf ("sobre: %s\n",c.id.sobrenome);//tá realmente onde quero gravar 
                  getch(); 
                printf("Entre com os dados\n"); 
                printf("Novo nome:"); 
                gets(c.id.nome); 
                fwrite(&c, sizeof(struct contato), 1, f);   //***estou com problemas aqui 
                 printf("%s",c.id.nome); //recebeu a entrada mas n salvou no arquivo mas é impresso normalmente 
                 getch(); 
                system("cls");  
                goto proximo; 
                }  
        }  
      } while(!feof(f)); 
      rewind(f);  
}