je ne sais pas pourquoi ce code ne marche pas!
salut
j'ai une fonction qui permet de modifier une opération (il s'agit des opérations de gestion d'une biliothéque
par exemple emprunt ,remise ...)
pour cela je demande à l'utilsateur 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 different choix de modifiction(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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| 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 fonction modifier :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
| 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(REMISE ou EMPRUNT\");
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 modification j'affiche l'opération ,le executable 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+