salut
j'ai une fct qui permet de modifier une opération (il s'agit des opérations de gestion d'une bibliothèque
par exemple emprunt ,remise ...)
pour cela je demande à l'utilisateur de taper le numéro de l'opération à modifier ,j'effectue une recherche
et dés que je trouve le numéro correspondant j'affiche un menu comportant les diffèrents choix de modification(par modifier le numéro de l'opération , modifier le nom de l'opération ...)
voici mon essai :
tout d'abord les structures :
Code : C




Code:
struct information_operation
  {
       char nom_operation[20];
       int num_operation;
        char date[12];
       char id_lecteur[50];
       char id_code_livre[50];
  };

typedef struct operation 
  {
       struct information_operation inf_op;  //c une structure comprotant les informations .
       struct operation *suivant;
  }maillon;
typedef maillon* liste ;
et puis la fct modifier :
Code : C

Code:
liste modification(liste l)
   {
          liste tmp=l;
          int temprairePourInt;
          char *temprairePourchaine;
          int numAmodifier,continue3=1,choix3;
       if(tmp==NULL)
           printf("la liste est vide ");
        else 
          
          { 
          {
             printf("taper le numero de l'opération à modifier");
             scanf("%d",&numAmodifier);
           }
        //cherchons l'opération qui corespond 
       while ((tmp->suivant!=NULL)&&(tmp->inf_op.num_operation!=numAmodifier))
           {
              tmp=tmp->suivant;
           }
       if (tmp->suivant!=NULL)
           {
               printf("la numero d'opération n'existe pas ");
               return NULL;
           }
       else
           { 
             system("cls"); 
       gotoxy(15,5);
       printf("Voulez vous modifier ?");
       
       gotoxy(20,7);
       printf("1.le nom de l'opération.");
       
       gotoxy(20,9);
       printf("2.le numéro de l'opération");
       
       gotoxy(20,11);
       printf("3.date");
       
       
       gotoxy(20,15);
       printf("4.l'id  de lecteur ");  
       
       gotoxy(20,17);
       printf("5.le code de livre  ");  
       
       gotoxy(20,19);
       printf("6.Quitter la modification  ");    
       
       printf("Taper votre choix:");
       scanf("%d",&choix3);
         switch(choix3)
      {
        case 1:
             temprairePourchaine=(char *)malloc(sizeof(char)*strlen(tmp->inf_op.nom_operation)+1);
             printf("taper le nouveau nom de l'opération(REMISEouEMPRUNT");
             scanf("%s",temprairePourchaine);
             strcpy(tmp->inf_op.nom_operation,temprairePourchaine);   
                   //continue3=0;  
                   break;
       case 2:
             printf("taper le nouveau numero");
             scanf("%d",&temprairePourInt);
             tmp->inf_op.num_operation=temprairePourInt;
                   //continue3=0;  
                   break;
        case 3:
               temprairePourchaine=(char *)malloc(sizeof(char)*strlen(tmp->inf_op.date)+1);
               printf("taper le nouvelle date");
               scanf("%s",temprairePourchaine);
               strcpy(tmp->inf_op.date,temprairePourchaine);   
                   //continue3=0;      
                   break;  
         case 4:
             temprairePourchaine=(char *)malloc(sizeof(char)*strlen(tmp->inf_op.id_lecteur)+1);
             printf("taper le nouveau id lecteur");
             scanf("%s",temprairePourchaine);
             strcpy(tmp->inf_op.date,temprairePourchaine);
                  //continue3=0;      
                  break;
         case 5:
            temprairePourchaine=(char*)malloc(sizeof(char)*strlen(tmp->inf_op.id_code_livre)+1);
            printf("taper le nouveau id lecteur");
            scanf("%s",temprairePourchaine);
            strcpy(tmp->inf_op.id_code_livre,temprairePourchaine);
                 //continue3=0;   
                 break;
         case 6:
                  break;
         default :
         gotoxy(20,16);
            printf("attenction ");        
           
        } 
}while(choix3!=1); 
}
}





mais ou' est le probléme?!
en fait il y a deux problémes lors de l'exécution:
si j'ajoute une nouvelle opération et je le modifie et puis aprés la mification j'affiche le'opération ,le exécutable se plante !
autre problème ,lorsque je donne un numero d'opération qui n'existe pas ,le menu s'affiche comme si ce numéro existe !!!!

merci de m'aidez à compiler mon programme corréctement !

A+