Exemple de strcmp

L`exemple suivant illustre ce comportement. Il est plus probable que vous rencontrerez ce comportement sur votre système. Disons que my_strcmp () est appelé avec deux arguments “ABC” (strg1) et “ABZ” (strg2), où strg1 pointe vers l`adresse 2000 et strg2 pointe vers l`adresse 3000. La comparaison s`arrête lorsque l`une des extrémités de la chaîne est atteinte ou que les caractères correspondants ne sont pas identiques. Par conséquent, la condition`c` = = `z`est false. Valeur de retour < 0 puis indique que le chaînon est inférieur à 2. Dans ce cas, la fonction strcmp () retourne une valeur supérieure à 0, car la valeur ASCII du premier caractère non égalé`e`est 101, ce qui est supérieur à la valeur ASCII de`E`qui est 69. Par conséquent, le chaînon est supérieur à 2 et strcmp () retournera 5 (i. En revanche, si le chaînon est inférieur à 2, alors-1 est renvoyé. Cela termine la 1ère itération. La fonction strcmp () compare deux chaînes et renvoie une valeur entière basée sur le résultat. La condition while devient fausse et le contrôle se décompose en boucle while. Dans l`exemple ci-dessus, nous comparons deux chaînes chaîné et chaînon à l`aide de la fonction strcmp ().

Ici nous avons deux cordes: “JKL” et “jkq”. Le contrôle vient au bloc Else et l`instruction suivante est exécutée. Selon de nombreux tutoriels en ligne cette fonction renvoie une valeur positive lorsque la première chaîne est supérieure à la deuxième chaîne, ce qui est absolument pas vrai ou vous pouvez dire non formulé correctement, parce que lorsque nous disons qu`une chaîne est supérieure à la seconde, nous parlons dans termes de longueur. Comme vous pouvez le voir, le my_strcmp () retourne la valeur ASCII des caractères incompatibles. La comparaison débute en comparant le premier caractère de chaînon et de i. La condition dit simplement garder en boucle jusqu`à ce que la fin de la chaîne n`est pas atteint et les caractères correspondants sont les mêmes. Dans la troisième itération, strg1 et strg2 points respectivement à l`adresse du caractère «c» et «z». Comme la condition est true, les instructions à l`intérieur du corps de la boucle sont exécutées. Maintenant strg1 points à l`adresse 2001 et strg2 points à l`adresse 3001.

La valeur non nulle retournée sur l`incompatibilité est la différence des valeurs ASCII des caractères non correspondants de deux chaînes. Il est important de noter que tous les systèmes ne retournent pas la différence de la valeur ASCII des caractères, sur certains systèmes si chaînon est supérieur à 2, puis 1 est renvoyé. Quand un opérateur relationnel (>, =, < =, = =,! Si deux chaînes sont identiques, strcmp () retourne 0, sinon, elle retourne une valeur différente de zéro. En tant que devoirs, modifiez cette fonction pour qu`elle retourne 1 si strg1 est supérieur à strg2 et-1 si strg1 est inférieur à strg2. Cette fonction prend deux chaînes comme arguments et compare ces deux chaînes lexicographiquement. Cette expression compare les adresses des chaînes pointée par S1 et S2 pas le contenu des littéraux de chaîne.