Fonction existe_livre
ouled omar ilyes
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
cher amis, mon probleme de cette fonction est comme suit: cette fonction ne peut pas lire p->next, j'est tout essayé, mais rien :/
voici la structure
typedef struct livre1
{
char nom[20];
char auteur[20];
int edition;
int nbre_copie;
char code[20];
struct livre1*next1;
}livre;
et voici la fonction
int existe_livre(livre*tete,char nom, char auteur,int edition )
{
livre*p=NULL;
p=(livre*)malloc(sizeof(livre));
p->next1=NULL;
p->next1=(livre*)malloc(sizeof(livre));
p=tete;
while((p->next1!= NULL)&&(p->nom!=nom || p->auteur!=auteur||p->edition!=edition))
{
p= p->next1;
}
if(p->next1!=NULL)
{
return 1;
}
else
{
return 0;
}
}
cher amis, mon probleme de cette fonction est comme suit: cette fonction ne peut pas lire p->next, j'est tout essayé, mais rien :/
voici la structure
typedef struct livre1
{
char nom[20];
char auteur[20];
int edition;
int nbre_copie;
char code[20];
struct livre1*next1;
}livre;
et voici la fonction
int existe_livre(livre*tete,char nom, char auteur,int edition )
{
livre*p=NULL;
p=(livre*)malloc(sizeof(livre));
p->next1=NULL;
p->next1=(livre*)malloc(sizeof(livre));
p=tete;
while((p->next1!= NULL)&&(p->nom!=nom || p->auteur!=auteur||p->edition!=edition))
{
p= p->next1;
}
if(p->next1!=NULL)
{
return 1;
}
else
{
return 0;
}
}
A voir également:
- Fonction existe_livre
- Fonction si et - Guide
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Fonction remplacer sur word - Guide
- Fonction somme excel - Guide
2 réponses
Bonjour,
En première lecture :
p->nom!=nom || p->auteur!=auteur
Attention nom est un char au lieu d'être un char*. Même remarque pour auteur => Modification du prototype de la fonction existe_livre().
Pour comparer des chaînes de caractères, on utilise la fonction strcmp().
Ce qui donnerait : strcmp(p->nom,nom)!=0 || ...
Tiens compte de ces remarques. Recompile ton code. Et s'il reste des erreurs, reposte ton code en le mettant entre les balises "codes" (situé à droite du bouton "souligné" et choisis "C" dans la liste déroulante). N'oublie pas de mettre également les messages (erreurs et warnings) indiqués par ton compilateur.
Cdlt,
En première lecture :
p->nom!=nom || p->auteur!=auteur
Attention nom est un char au lieu d'être un char*. Même remarque pour auteur => Modification du prototype de la fonction existe_livre().
Pour comparer des chaînes de caractères, on utilise la fonction strcmp().
Ce qui donnerait : strcmp(p->nom,nom)!=0 || ...
Tiens compte de ces remarques. Recompile ton code. Et s'il reste des erreurs, reposte ton code en le mettant entre les balises "codes" (situé à droite du bouton "souligné" et choisis "C" dans la liste déroulante). N'oublie pas de mettre également les messages (erreurs et warnings) indiqués par ton compilateur.
Cdlt,
merci, mais j'ai mis pas des pointeur sur des chaines, juste j'ai mis une variable chaine
-> p->auteur est une chaine, ce n'est pas un pointeur
-> p->auteur est une chaine, ce n'est pas un pointeur
Tu as mis en argument de la fonction char auteur au lieu de char *auteur ou char auteur[]. C'est comme tu veux mais ça ne change rien.
Ensuite tu cherches à comparer les chaines et non les pointeurs ! Comparer les pointeurs revient à comparer l'adresse mémoire du heap où ils pointent. Toi ce que tu cherches, c'est comparer les chaines, c'est à dire les lettres composant le nom de l'auteur. Donc strcmp()...
Ensuite tu cherches à comparer les chaines et non les pointeurs ! Comparer les pointeurs revient à comparer l'adresse mémoire du heap où ils pointent. Toi ce que tu cherches, c'est comparer les chaines, c'est à dire les lettres composant le nom de l'auteur. Donc strcmp()...