Opérateurs de comparaison pour les chaînes C

J’ai un peu de difficulté à trouver des informations pour comparer les chaînes C. Je comprends que contrairement au C ++, le C ne supporte pas la surcharge de l’opérateur, je me demande donc s’il existe un moyen de vérifier si une chaîne est supérieure / inférieure à une autre (par exemple, str1> str2)?

Merci d’avance pour vos réponses. Honnêtement, c’est l’une des premières fois où j’ai eu à poser une question parce que je n’étais pas en mesure de trouver un poste connexe.

Il y en a plusieurs, chacune servant des objectives différents (en omettant les variantes de caractères larges pour l’instant).

strcmp – compare deux chaînes, caractère par caractère (avec la notion C de ce que les chaînes sont égales ou non – cela ne doit pas nécessairement coïncider avec la façon dont les humains pensent – voir strcoll ). Il existe une variante pour comparer uniquement le premier au plus n caractères, strncmp .

strcasecmp – compare deux chaînes en ignorant la casse. Il existe une variante permettant de comparer uniquement le premier au plus n caractères, strncasecmp .

strcoll – compare deux chaînes, en observant les parameters régionaux actuellement définis (c’est pourquoi on appelle cela le classement, et non la comparaison dans ce cas). Si vous voulez que ss et ß comparent égaux pour un public allemand, c’est ce que vous devriez utiliser.


Où vous pourriez écrire

 if (ssortingng1 > ssortingng2) ... 

dans une langue, il faut écrire

 if (strmp(ssortingng1, ssortingng2) > 0) ... 

en C. Essentiellement, vous déplacez les deux opérandes dans l’appel de fonction, conservez l’opérateur de comparaison et comparez avec 0 .

Utilisez strcmp () en C.

par exemple, si vous voulez comparer deux chaînes s1 et s2,

strcmp (s1, s2) renverra 0 s’ils sont égaux, un entier positif si s1 est supérieur à s2 et un entier négatif si s1 est inférieur à s2.