Lorsque vous comparez des chaînes en C, que devez‑vous utiliser ? La fonction strcmp vérifie si deux chaînes sont identiques — comme demander à votre programme : « Ces deux chaînes sont‑elles les mêmes ? » Bien sûr, un programme ne peut pas décider si les chats ou les chiens sont plus mignons, mais il peut faire la différence entre « HELLO » et « hello ». Dans cet article, nous explorerons le fonctionnement de strcmp, comment l’utiliser et les erreurs courantes à éviter.
1. Qu’est‑ce que la fonction strcmp ?
La fonction strcmp compare deux chaînes caractère par caractère et renvoie un entier selon le résultat. Voici son comportement :
- 0 : Les chaînes sont exactement identiques
- Valeur positive : La première chaîne vient après la seconde dans l’ordre alphabétique
- Valeur négative : La première chaîne vient avant la seconde dans l’ordre alphabétique
Ainsi, non seulement vous pouvez vérifier si deux chaînes sont identiques, mais vous pouvez aussi déterminer laquelle vient en premier. Voici un exemple simple d’utilisation dans du code :
#include <stdio.h>
#include <string.h>
int main() {
char str1[] = "Hello";
char str2[] = "World";
int result = strcmp(str1, str2);
printf("Result of strcmp: %dn", result);
return 0;
}
Ce code compare « Hello » et « World » et affiche le résultat. Il est important de noter que strcmp est sensible à la casse, donc « HELLO » et « hello » seront traitées comme des chaînes différentes.
2. Comment strcmp fonctionne en interne
Le comportement de strcmp est simple mais puissant. Il compare deux chaînes caractère par caractère depuis le début, et dès qu’il trouve une différence, il renvoie la différence entre ces caractères. Ce mécanisme est également utile pour les comparaisons alphabétiques — par exemple, en comparant « apple » et « banana », strcmp comparera d’abord ‘a’ et ‘b’ et renverra une valeur négative.
Voici un autre exemple de programme pour vous aider à comprendre le fonctionnement de strcmp :
#include <stdio.h>
#include <string.h>
int main() {
char str1[] = "apple";
char str2[] = "banana";
int result = strcmp(str1, str2);
if (result == 0) {
printf("The strings match.n");
} else if (result < 0) {
printf("str1 comes before str2.n");
} else {
printf("str1 comes after str2.n");
}
return 0;
}
Ce code compare « apple » et « banana ». Comme prévu, strcmp indique que « apple » vient avant « banana » dans l’ordre alphabétique. Cela en fait un outil pratique pour trier des chaînes alphabétiquement.

3. Exemples d’utilisation de strcmp
1. Vérification de l’entrée utilisateur
strcmp est utile lorsque vous devez comparer l’entrée d’un utilisateur avec des données existantes — par exemple, vérifier si un mot de passe correspond au bon.
#include <stdio.h>
#include <string.h>
int main() {
char password[] = "secret";
char input[256];
printf("Enter your password: ");
scanf("%s", input);
if (strcmp(password, input) == 0) {
printf("Password match.n");
} else {
printf("Incorrect password.n");
}
return 0;
}
Ce programme compare le mot de passe saisi avec le mot de passe correct à l’aide de strcmp.
2. Tri dans l’ordre alphabétique
strcmp est également pratique pour trier des chaînes alphabétiquement. Lors du tri d’une liste de mots, vous pouvez utiliser strcmp pour déterminer quel mot doit apparaître en premier.
4. Alternatives à strcmp
Bien que strcmp soit très utile, il existe des cas où d’autres fonctions peuvent être plus appropriées selon ce que vous cherchez à accomplir.
strncmp : comparer une partie d’une chaîne
Si vous ne souhaitez comparer qu’une partie d’une chaîne, strncmp est une meilleure option. Par exemple, si vous ne voulez comparer que les trois premiers caractères de deux chaînes, utilisez cette fonction.
#include <stdio.h>
#include <string.h>
int main() {
char str1[] = "apple";
char str2[] = "apricot";
if (strncmp(str1, str2, 3) == 0) {
printf("The first 3 characters match.n");
} else {
printf("The first 3 characters do not match.n");
}
return 0;
}
memcmp : comparer la mémoire brute
memcmp est utilisé pour comparer la mémoire brute plutôt que seulement des chaînes de caractères. Il est utile lorsqu’on travaille avec des données binaires ou des blocs de mémoire non textuels.
5. Erreurs courantes lors de l’utilisation de strcmp
1. Ignorer la sensibilité à la casse
strcmp est sensible à la casse. Cela signifie que « HELLO » et « hello » sont considérées comme des chaînes différentes. Si vous devez effectuer une comparaison qui ignore la casse, envisagez d’utiliser strcasecmp à la place (note : cette fonction peut varier selon votre environnement).
2. Comparer des pointeurs NULL
Si vous essayez d’utiliser strcmp pour comparer un pointeur NULL, votre programme plantera probablement. Assurez‑vous toujours que les chaînes que vous comparez ont été correctement initialisées.
Conclusion
strcmp est une fonction essentielle en programmation C qui rend la comparaison de chaînes simple et efficace. Nous avons parcouru des exemples concrets comme la vérification de mots de passe et le tri alphabétique pour montrer comment elle est utilisée en pratique. Si vous travaillez avec des chaînes dans vos programmes, vous trouverez cette fonction incroyablement utile — essayez‑la et voyez comment elle s’intègre à votre code !



