Comparer les chaînes de caractères en C
-
Utiliser la fonction
strcmp
pour comparer des chaînes de caractères -
Utilisez la fonction
strncmp
pour comparer seulement certaines parties de chaînes de caractères -
Utilisez les fonctions
strcasecmp
etstrncasecmp
pour comparer des chaînes de caractères en ignorant la casse des lettres
Cet article présente de multiples méthodes pour comparer les chaînes de caractères en C.
Utiliser la fonction strcmp
pour comparer des chaînes de caractères
La fonction strcmp
est la fonction standard de la bibliothèque définie dans l’en-tête <string.h>
. Les chaînes de style C sont juste des séquences de caractères terminées par le symbole \0
, donc la fonction devrait comparer chaque caractère avec l’itération.
strcmp
prend deux chaînes de caractères et renvoie l’entier pour indiquer le résultat de la comparaison. Le nombre renvoyé est négatif si la première chaîne est lexicographiquement inférieure à la seconde, ou positif si la seconde est inférieure à la première, ou 0
si les deux chaînes sont identiques.
Notez que, dans l’exemple suivant, nous inversons la valeur de retour de la fonction et l’insérons dans l’instruction conditionnelle ?:
pour imprimer la sortie correspondante à la console.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
const char* str1 = "hello there 1";
const char* str2 = "hello there 2";
const char* str3 = "Hello there 2";
!strcmp(str1, str2) ? printf("strings are equal\n")
: printf("strings are not equal\n");
!strcmp(str1, str3) ? printf("strings are equal\n")
: printf("strings are not equal\n");
exit(EXIT_SUCCESS);
}
Production :
strings are not equal
strings are not equal
Utilisez la fonction strncmp
pour comparer seulement certaines parties de chaînes de caractères
strncmp
est une autre fonction utile définie dans l’en-tête <string.h>
, et elle peut être utilisée pour comparer seulement plusieurs caractères du début des chaînes.
strncmp
prend le troisième argument de type entier pour spécifier le nombre de caractères à comparer dans les deux chaînes. Les valeurs de retour de la fonction sont similaires à celles renvoyées par la strcmp
.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
const char* str1 = "hello there 1";
const char* str2 = "hello there 2";
!strncmp(str1, str2, 5) ? printf("strings are equal\n")
: printf("strings are not equal\n");
exit(EXIT_SUCCESS);
}
Production :
strings are equal
Utilisez les fonctions strcasecmp
et strncasecmp
pour comparer des chaînes de caractères en ignorant la casse des lettres
La fonction strcasecmp
se comporte de la même manière que la fonction strcmp
, sauf qu’elle ignore la casse des lettres. Cette fonction est compatible POSIX et peut être utilisée sur plusieurs systèmes d’exploitation avec strncasecmp
, qui implémente la comparaison insensible à la casse sur un certain nombre de caractères dans les deux chaînes. Ce dernier paramètre peut être passé à la fonction avec le troisième argument de type size_t
.
Notez que les valeurs de retour de ces fonctions peuvent être utilisées directement dans les déclarations conditionnelles.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
const char* str1 = "hello there 2";
const char* str3 = "Hello there 2";
!strcasecmp(str1, str3) ? printf("strings are equal\n")
: printf("strings are not equal\n");
!strncasecmp(str1, str3, 5) ? printf("strings are equal\n")
: printf("strings are not equal\n");
exit(EXIT_SUCCESS);
}
Production :
strings are equal
strings are equal
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook