Bonjour à tous, pourriez-vous m'expliquez la fonction strcmp, car j'ai trouvé pas mal de choses sur cette fonction mais je ne comprend pas bien comment il compare les chaines de caractères, merci beaucoup.
Mike
Bonjour à tous, pourriez-vous m'expliquez la fonction strcmp, car j'ai trouvé pas mal de choses sur cette fonction mais je ne comprend pas bien comment il compare les chaines de caractères, merci beaucoup.
Mike
chaque caractère possède une valeur numérique associée (code ascii par exemple).
la fonction strcmp prend la chaine source caractère par caractère et la compare avec la chaine de comparaison , caractère par caractère, en les transformant en code numérique.
Et donc comme les lettres de l'alphabet se suivent numériquement (A = 65, B=66, etc..)
une chaîne commençant par "ABC" sera inférieure à une chaîne commençant par "ABD".
Par souci de rapidité, la comparaison s'arrête au premier caractère différent, et strcmp donne le signe de la différence.
Merci pour votre réponse, si j'ai bien compris, on va dire que je dois comparer deux chaines de caractères donc :
on va dire que ma premiere chaine est : michael
et la deuxième : sherlla
il va comparer les deux premiers caractère, comme le s est plus haut que le m il s'arrête de suite, c'est bien cela ?
Merci
Cela fait longtemps que je n'ai plus regardé le code de strcmp mais il me semble bien oui.Envoyé par IDE
Et donc si tu fais strcmp ( "sherlla", "michael" ) cela devrait te donner un nombre positif (vraisemblablement 7), alors que si tu faisais strcmp ("michael", "sherlla") il te donnerait un nombre négatif (vraisemblablement -7)
![]()
Je n'ai pas bien compris avec le 7 et le moins 7, c'est le nombre de caractères de la chaine cela ??
merci
c'est le nombre de caractères différents lettre a lettre je penses
non c'est la différence de valeurs des caractères :
en ascii : m = 109 s = 115
![]()
En ce qui concerne la valeur renvoyée, la norme dit simplement que si cette valeur n'est pas nulle, le signe de cette dernière est déterminé par le signe de la différence des valeurs des caractères de la 1ère paire dont les carctères diffèrent. Dans le cas mentionné ci-dessus avecEnvoyé par souviron34
la fonction strcmp doit renvoyer une valeur positive. Que ce soit +1 ou +7 est un détail d'implantation (d'autant que cela dépend du jeu de caractère utilisé). L'implantation proposée par Plauger (La bibliothèque C standard, Masson, 1995) renvoie invariablement 0, -1 ou +1. L'implantation de la version de la GNU libc que j'utilise renvoie +1 pour strcmp("sherlla", "michael").
Code : Sélectionner tout - Visualiser dans une fenêtre à part strcmp("sherlla", "michael");
Thierry
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+
entièrement d'accord avec toi .
Ce que je disais c'était le principe de la manière avec lequel ça marche. Une chaîne est supérieure si le code (exprimé avec le jeu de caractères utilisé, ascii, ecbcdic, etc..) du premier caractère différent est supérieur au code du même caractère de l'autre chaîne..
Quant à la valeur renvoyée, oui c'est une question d'implémentation. C'est bien pour ça que j'avais eu besoin de la petite fonction que j'avais mis dans le forum Contribuez, pour avoir une quantité mesurable de la différence..
Et pour le chiffre 7 que je donnais au dessus, tout dépend d'ailleurs si le programmeur de la fonction raisonne en termes de différence d evaleurs ou de différences d'indices (6 ou 7).
Partager