Télécharger l'article Télécharger l'article

Comparer la longueur des chaines de caractères (« strings » en anglais) est une fonction très commune dans la programmation en C, car elle vous permet de voir quelle chaine contient le plus de caractères. Il s'agit d'une fonction très utile pour trier des données. La comparaison des chaines de caractères nécessite une fonction spécifique, n'utilisez pas != , ni == .

  1. Ces fonctions sont toutes deux présentes dans la bibliothèque <string.h> .
    • strcmp() - Cette fonction compare deux chaines de caractères et renvoie la différence en nombre de caractères.
    • strncmp() - Il s'agit de la même chose que strcmp() , sauf que cette fonction compare les n premiers caractères. Elle est considérée comme étant plus sure, car elle permet d'empêcher les plantages dus aux dépassements de pile.
  2. Vous aurez besoin des bibliothèques <stdio.h> et <string.h> , ainsi que de celles dont vous auriez besoin spécifiquement pour votre programme.
     #include 
     <stdio.h> 
      
     #include 
     <string.h> 
      
    
  3. int . Il s'agit de la façon la plus simple d'apprendre cette fonction, car elle renverra un entier correspondant à la différence de longueur entre les deux chaines de caractères.
     #include 
     <stdio.h> 
      
     #include 
     <string.h> 
      
     int 
     main 
     () 
     { 
     } 
    
  4. Pour cet exemple, nous allons comparer deux chaines de caractères «  char  » prédéfinies. Vous devriez également définir la valeur de retour comme étant un entier (« int »)  [1] .
     #include 
     <stdio.h> 
      
     #include 
     <string.h> 
      
     int 
     main 
     () 
     { 
     char 
     * 
     str1 
     = 
     "pomme" 
     ; 
     char 
     * 
     str2 
     = 
     "orange" 
     ; 
     int 
     ret 
     ; 
     } 
    
  5. Maintenant que vous avez créé et défini vos deux chaines de caractères, vous pouvez mettre en place la fonction de comparaison. Nous allons nous servir de strncmp() , nous devons donc nous assurer que le nombre de caractères à mesurer est bien défini dans la fonction.
     #include 
     <stdio.h> 
      
     #include 
     <string.h> 
      
     int 
     main 
     () 
     { 
     char 
     * 
     str1 
     = 
     "pomme" 
     ; 
     char 
     * 
     str2 
     = 
     "orange" 
     ; 
     int 
     ret 
     ; 
     ret 
     = 
     strncmp 
     ( 
     str1 
     , 
     str2 
     , 
     6 
     ); 
     /* Cela comparera les deux chaines de 
     caractères jusqu'à leur sixième caractère */ 
     } 
    
  6. If...Else pour réaliser la comparaison. Maintenant que la fonction est en place, vous pouvez vous servir d'une structure If...Else pour faire afficher quelle chaine de caractères est la plus longue. strncmp() renverra 0 si les chaines sont de même longueur, un nombre positif si la chaine str1 est plus grande, et un nombre négatif si la chaine str2 est plus grande.
     #include 
     <stdio.h> 
      
     #include 
     <string.h> 
      
     int 
     main 
     () 
     { 
     char 
     * 
     str1 
     = 
     "pomme" 
     ; 
     char 
     * 
     str2 
     = 
     "orange" 
     ; 
     int 
     ret 
     ; 
     ret 
     = 
     strncmp 
     ( 
     str1 
     , 
     str2 
     , 
     6 
     ); 
     if 
     ( 
     ret 
     > 
     0 
     ) 
     { 
     printf 
     ( 
     "str1 est plus long" 
     ); 
     } 
     else 
     if 
     ( 
     ret 
     < 
     0 
     ) 
     { 
     printf 
     ( 
     "str2 est plus long" 
     ); 
     } 
     else 
     { 
     printf 
     ( 
     "Les chaines sont de longueur égale" 
     ); 
     } 
     return 
     ( 
     0 
     ); 
     } 
    
    Publicité

Avertissements

  • Souvenez-vous que la valeur de retour sera 0 si les chaines de caractères sont identiques. Cela pourrait porter à confusion, car le 0 est aussi la valeur pour « Faux » (ou « FALSE »).
Publicité

À propos de ce wikiHow

Cette page a été consultée 25 598 fois.

Cet article vous a-t-il été utile ?

Publicité