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
et puis la fct modifier :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 ;
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+
-----