Le man de la fonction memcmp
🎯 Comparer deux blocs de mémoire octet par octet.
⚙️ Prototype de memcmp
int memcmp(const void *s1, const void *s2, size_t n);
🧑💻 Fonctionnement de memcmp
La fonction memcmp
compare les premiers n
octets des zones mémoire pointées par s1
et s2
. Elle retourne un entier qui indique la relation entre les deux blocs de mémoire :
- Si les deux blocs de mémoire sont identiques,
memcmp
retourne 0. - Si la première différence se trouve à un octet où le contenu de
s1
est inférieur à celui des2
,memcmp
retourne un entier négatif. - Si la première différence se trouve à un octet où le contenu de
s1
est supérieur à celui des2
,memcmp
retourne un entier positif.
- Si les deux blocs de mémoire sont identiques,
Cette fonction est souvent utilisée pour comparer des zones mémoire de manière binaire, utile pour comparer des chaînes de caractères, des structures, ou d’autres types de données.
Paramètres :
s1
: Un pointeur vers le premier bloc de mémoire à comparer.s2
: Un pointeur vers le second bloc de mémoire à comparer.n
: Le nombre d’octets à comparer.
Retour :
Retourne un entier négatif, nul, ou positif selon que le bloc mémoire pointé par s1
est respectivement inférieur, égal, ou supérieur au bloc mémoire pointé par s2
.
Remarques :
memcmp
est particulièrement utile pour comparer des blocs de mémoire de manière binaire, ce qui est essentiel pour les opérations de bas niveau et les comparaisons rapides de données.Attention :
memcmp
compare les données en binaire, ce qui signifie que des différences mineures, même dans des bits non significatifs, peuvent entraîner des résultats non intuitifs. Utilisez cette fonction lorsque vous avez besoin d’une comparaison exacte des valeurs mémoire.
✨ Exemple d'utilisation de memcmp
Comparaison de Structures :
👉 Ici, memcmp est utilisé pour comparer deux structures Point octet par octet.
int array1[] = {1, 2, 3, 4, 5};
int array2[] = {1, 2, 3, 4, 6};
if (memcmp(array1, array2, 4 * sizeof(int)) == 0) {
printf("Les quatre premiers éléments des tableaux sont identiques.\n");
} else {
printf("Les quatre premiers éléments des tableaux diffèrent.\n");
}
Voir aussi :
memcmp
: Comparaison de blocs de mémoire binaire.memcpy
: Copie des blocs de mémoire d’une zone vers une autre.memmove
: Déplace des blocs de mémoire, même s’ils se chevauchent.strcmp
: Compare des chaînes de caractères de manière lexicographique.