voila j ai un probleme je n arrive pas a ecrire dans mon fichier le programme plante lors du fwrite si qq un pouvait merci d avance 
!!!
 
voici le code:
 
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void testfichier(FILE *,FILE *);
void ajout(struct FICHE *pt,FILE *);
void tri(struct INDEX *,int);
void insertion(struct INDEX *,int,struct INDEX *);
struct FICHE{
           int matr;
     char nom[20];
     char prenom[15];
   };  
 
struct INDEX{
           char nom [20];
     long pos;
   };
 
 
void main()
{
 struct FICHE membre;
    struct INDEX index;
 int choix;
 int i=1;
    FILE *fp;/*pointeur du fichier membre.dat*/
 FILE *fpi;/*pointeur du fichier d index*/
   	while(i>0)
 {
      printf(" ------------------MENU-----------------\n" );  
      printf("|              1:encodage               |\n" );
      printf("|              2:quitter                |\n" );
      printf(" ---------------------------------------\n" );
      printf(" choissisez l option desirez:" );
      choix=getchar();
   printf("\n" );    
   switch(choix)
   {
     case'1':testfichier(fp,fpi);
       ajout(&membre,fp);
 
     break;  
 	case'2':i=-1;
    }      
  fflush(stdin);
 }
 fcloseall();
}
/************************************************************************
*I:ADRESSE DE DEBUT DE TABLEAU ET NOMBRE DE FICHE                       *
*P:TRI PAR VECTEUR D INDEX                                              *
*O:---------------------------------------------------------------------*
************************************************************************/
void testfichier (FILE *fp,FILE *fpi)
{
 int choix,i=1;
 fp = fopen ("C:\\fichier\\membre.dat", "r+b" );
 if (fp == NULL)
 {
     printf("le fichier n a pas pu etre ouvert ou n existe pas\n" );
  printf("CREATION DU FICHIER !!!!!\n" );
     fp = fopen ("C:\\fichier\\membre.dat", "wb" );
     fpi = fopen ("C:\\fichier\\membre.ndx", "wb" );
     printf("le fichier a ete cree\n\n" );
         
 }      
    else
 {
  if (fp != NULL)
  {
 	printf("le fichier existe deja\n\n" );
 	fflush(stdin);
        while(i>0)
 	{
         printf(" ------------------MENU-----------------\n" );  
         printf("|    1:creation du nouveaux fichier     |\n" );
         printf("|    2:garder le fichier present        |\n" );
         printf(" ---------------------------------------\n" );
         printf(" choissisez l option desirez:" );
         choix=getchar();
      printf("\n" );    
      switch(choix)
   {
        case'1':fp = fopen ("C:\\fichier\\membre.dat", "wb" );
          fpi = fopen ("C:\\fichier\\membre.ndx", "wb" );
          printf("le nouveau fichier a ete cree\n" );
       i=-1;
                   break;  
     case'2':i=-1;
       
         
   }      
       fflush(stdin);
 	}
  }
 }
 
}
/************************************************************************
*I:ADRESSE DE DEBUT DE TABLEAU ET NOMBRE DE FICHE                       *
*P:TRI PAR VECTEUR D INDEX                                              *
*O:---------------------------------------------------------------------*
************************************************************************/
void ajout(struct FICHE *pt, FILE *fp)
{
   printf("entrez le matricule:\n" );
   fflush(stdin);
   scanf("%d",&pt->matr);
      printf("entrez le nom\n" );
   fflush(stdin);
   gets(pt->nom);
   printf("entrez le prenom\n" );
   fflush(stdin);
   gets(pt->prenom);
   system("cls" );
   fwrite(&pt,sizeof(pt),1,fp);
}
voila c est dans la fonction ajout que ca plante au moment du fwrite mais je ne trouve pas mon erreur 
merci d avance