Bonjour,
j'ai un petit problème de pointeurs.... (étonnant)
et je ne comprends vraiment pas pourquoi ca ne marche pas.
Pour résumer l'idée du code, je dois réaliser une pseudo bibliothèque et ajouter des ouvrages à celle-ci (ajouterEntree). Lors de l'ajout, il y a une mehode qui recherche si cet ouvrage existe deja (chercherFiche).
Voici les deux methodes en question:
1 2
| void ajouterEntree(int type, char o_titre[],char o_dateEdition[], char o_commentaire[],
char a_nom[], char a_prenom[], char a_commentaire[], char e_nom[], char e_adresse[]); |
et
Fiche *chercherFicheExistante(Classeur *classeur, char champ1[], char champ2[]);
Lors de mes tests, j'ai utilisé la méthode ajouterEntree de la manière suivante:
ajouterEntree(0, "toto", "d", "d", "d", "d", "d", "d");
Tout marche très bien ainsi au final, ce sera l'utilisateur qui remplira les differents champs (sur la console). J'ai donc développé un menu et c'est la que tout va mal.
J'ai voulu creer des variables globales pour les differents champs dont la valeur serait ecrasee à chaque fois qu'on ajoute un ouvrage.
1 2 3 4 5 6
| char o_titre[30];
.........
switch() {.......
printf(Saisissez le titre);
scanf("%s", o_titre);
ajouterEntree(0, o_titre, "d", "d", "d", "d", "d", "d"); |
Et a chaque nouvel ajout d'un ouvrage, la nouvelle valeur ecrase l'ancienne mais partout, c'est a dire que la variable titre de l'ancien ouvrage prend celle
du nouvel ouvrage.
Je ne comprends pourquoi cela fait ca puisque normalement je passe la valeur
que contient o_titre en argument d'ajouterEntree comme si je faisais "toto", non? Ainsi il n'y a pas de le contenu de o_titre a l'ajout suivant
et ne devrait donc pas influer sur les ajoutrs precedents... enfin c'est ce que je croyais.
Bon j'ai testé avec les pointeurs aussi, la ca marche si je les declare a l'interrieur du switch et pas en variables globales du fichier... encore une fois je ne comprends pas trop...
Quelqu'un pourrait m'expliquer mon erreur s'il vous plait?
Merci et bonne journée.
Partager