X
wikiHow est un wiki, ce qui veut dire que de nombreux articles sont rédigés par plusieurs auteurs(es). Pour créer cet article, 20 personnes, certaines anonymes, ont participé à son édition et à son amélioration au fil du temps.
Cet article a été consulté 17 939 fois.
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 ==.
Étapes
-
1Il existe deux fonctions vous permettant de comparer les chaines de caractères en C. 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.
-
2Faites exécuter le programme avec les bibliothèques nécessaires. 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>
-
3Faites une fonction .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 () { }
-
4Créez les deux chaines de caractères que vous voulez comparer. 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; }
-
5Ajoutez la fonction de comparaison. 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 */ }
-
6Utilisez une structure .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
Publicité