strcmp entre 2 structures

strcmp entre 2 structures - C - Programmation

Marsh Posté le 30-03-2005 à 12:44:06    

Salut,  
je doit comparer le nom d'une personne avec les autres noms qui se situe dans la même structure.
p reste fixe (il vaut: "Dupont" ) et pdebut bouge dans la structure (il vaut "Begg" puis "Gaston"...)
 
Voilà le code qui se situe dans la boucle

Code :
  1. printf("\nNom1: %s",pdebut->nom);
  2. printf("\nNom2: %s",p->nom);
  3. tmp=strcmp(pdebut->nom,p->nom);
  4. printf("\nResultat: %d",tmp);


 
Le premier passage dans la boucle donnera:
Nom1: Begg
Nom2: Dupont
Resultat: -1
 
En principe ca devrait donner "1" non?
 
Dans le deuxième passage on obtient:
Nom1: Gaston
Nom2: Dupont
Resultat: -1
 
Ici le résultat est le même ce qui n'a aucun sens vu que Begg>Dupont>Gaston
 
 
Vu qu'il m'affiche correctement les noms, je pense que c'est mon strcmp qui va mal...
 
Est-ce que quelqu'un pourrait me dire ce qui cloche?  :jap:  
 
Merci d'avance


Message édité par finch911 le 30-03-2005 à 12:45:36
Reply

Marsh Posté le 30-03-2005 à 12:44:06   

Reply

Marsh Posté le 30-03-2005 à 14:01:07    

Citation :

En principe ca devrait donner "1" non?  


non

Reply

Marsh Posté le 30-03-2005 à 14:45:16    

Oui c'est vrais j'avais mal lu...
Mais pour le deuxième ca doit donner 1...
Quesqu'y ne va pas dans ma syntaxe?

Reply

Marsh Posté le 30-03-2005 à 15:31:15    

finch911 a écrit :

je doit comparer le nom d'une personne avec les autres noms qui se situe dans la même structure.
p reste fixe (il vaut: "Dupont" ) et pdebut bouge dans la structure (il vaut "Begg" puis "Gaston"...)
 
Voilà le code qui se situe dans la boucle

Code :
  1. printf("\nNom1: %s",pdebut->nom);
  2. printf("\nNom2: %s",p->nom);
  3. tmp=strcmp(pdebut->nom,p->nom);
  4. printf("\nResultat: %d",tmp);


 
Le premier passage dans la boucle donnera:
Nom1: Begg
Nom2: Dupont
Resultat: -1
 
En principe ca devrait donner "1" non?
 
Dans le deuxième passage on obtient:
Nom1: Gaston
Nom2: Dupont
Resultat: -1
 
Ici le résultat est le même ce qui n'a aucun sens vu que Begg>Dupont>Gaston
 
Vu qu'il m'affiche correctement les noms, je pense que c'est mon strcmp qui va mal...


Je n'ai pas ce problème avec ce code:


#include <stdio.h>
#include <string.h>
 
int main (void)
{
   printf ("%d\n", strcmp ("Dupont", "Begg" ));
   printf ("%d\n", strcmp ("Dupont", "Gaston" ));
   printf ("%d\n", strcmp ("Dupont", "Dupont" ));
   
   return 0;
}


Qui produit:


1
-1
0


Message édité par Emmanuel Delahaye le 30-03-2005 à 15:32:48

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 03-04-2005 à 12:00:23    

J'ai comprit!
Si je tape la première lettre du premier nom en maj et la première lettre du second nom en minuscule, ca débloque...
Je comprend pas pourquoi...
 
J'ai fait dans ma fonction un retour de Maj, donc tout les noms seront en maj, donc plus de problème  :jap:

Reply

Marsh Posté le 03-04-2005 à 12:13:14    

finch911 a écrit :

Si je tape la première lettre du premier nom en maj et la première lettre du second nom en minuscule, ca débloque...
Je comprend pas pourquoi...
 
J'ai fait dans ma fonction un retour de Maj, donc tout les noms seront en maj, donc plus de problème  :jap:


Lire la doc de strcmp(). Les chaines doivent être strictement identiques...


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed