MEMCMP |
Compare mémoire |
---|---|
Langage C++ | cstring (string.h) |
Syntaxe
void *memcmp(const void *tamponrecherche, const void *tampondonnees, size_t n) |
Paramètres
Nom | Description |
---|---|
tamponrecherche | Ce paramètre permet d'indiquer le tampon contenant l'objet de la recherche |
tampondonnees | Ce paramètre permet d'indiquer le tampon dans lequel la rechercher doit avoir lieu |
n | Ce paramètre permet d'indiquer la taille du tampon en octets |
Retour
Valeur | Description |
---|---|
< 0 (Moins que zéro) | Ces valeurs permettent d'indiquer que tamponrecherche est inférieur à tampondonnees. |
0 (Zéro) | Cette valeur permet d'indiquer que tamponrecherche est égal à tampondonnees. |
> 0 (Supérieur à zéro) | Ces valeurs permettent d'indiquer que tamponrecherche est supérieur à tampondonnees. |
Description
Cette fonction permet de rechercher un caractère dans le tampon de «n» octets.
Remarques
- La fonction memcmp() compare les premiers caractères de compteur des tableaux pointés par tamponrecherche et tampondonnees.
- Définition et utilité : La fonction memcmp est définie dans la bibliothèque <cstring> (ou <string.h> en C) et permet de comparer deux blocs de mémoire byte par byte. Elle est utile pour comparer des données binaires ou des structures en mémoire. Contrairement à des fonctions comme strcmp ou strncmp, comparant des chaînes de caractères, memcmp compare des zones de mémoire de longueur définie, ce qui la rend idéale pour les comparaisons de structures, tableaux ou autres types de données binaires.
- Comparaison byte par byte : memcmp compare les blocs de mémoire byte par byte, ce qui signifie que l'ordre des octets dans les blocs de mémoire est important. Si une différence est trouvée entre les octets à une position donnée, la fonction retourne immédiatement le résultat de la comparaison pour ces octets. Si les blocs sont identiques jusqu'à la fin, la fonction retourne zéro. Cette approche est directe et rapide pour la comparaison de données binaires.
- Utilisation pour des structures ou des tableaux : Une des applications courantes de memcmp est la comparaison de structures ou de tableaux en mémoire. Par exemple, si vous devez comparer deux objets de types complexes (structures, tableaux de données), vous pouvez utiliser memcmp pour effectuer cette comparaison rapidement. Il est important de noter que cette fonction compare les zones de mémoire sans se soucier de la signification des données, elle compare simplement les octets.
- Limitation à des comparaisons de blocs de mémoire : Contrairement aux fonctions comme strcmp ou strncmp, étant spécifiquement conçues pour traiter des chaînes de caractères null-terminées, memcmp n'a pas de telle restriction et compare exactement num octets. Cela signifie qu'elle ne s'arrête pas au premier octet nul (\0), ce qui la rend adaptée pour des comparaisons de données binaires ou pour des chaînes de caractères non-null-terminées.
- Retour du résultat de la comparaison : Le retour de memcmp est un entier permettant de déterminer l'ordre lexicographique des blocs de mémoire : Un retour égal à 0 signifie que les deux blocs sont identiques. Un retour inférieur à 0 signifie que le premier bloc est "inférieur" au second selon la comparaison byte par byte (la différence entre les premiers octets non identiques). Un retour supérieur à 0 signifie que le premier bloc est "supérieur" au second. Ce comportement est similaire à celui des fonctions de comparaison comme strcmp.
- Performance : memcmp est généralement plus rapide que de nombreuses comparaisons de chaînes de caractères ou de données, car elle effectue une comparaison simple à l'échelle des octets, sans se soucier du type ou de l'encodage des données. Cependant, la performance peut être influencée par la taille des blocs comparés et le matériel sous-jacent. Pour des blocs de grande taille, la vitesse peut être affectée par le nombre d'octets à comparer, mais pour de petites tailles de blocs, elle reste généralement très rapide.
- Limites de la fonction : Bien que memcmp soit utile pour la comparaison binaire, elle ne prend pas en compte la sémantique des données dans les blocs comparés. Par exemple, elle ne sait pas si une comparaison concerne des entiers, des chaînes de caractères ou des nombres à virgule flottante. Il est donc important d'utiliser memcmp uniquement pour des comparaisons de blocs de mémoire homogènes, où chaque octet a une signification similaire (par exemple, une structure de données binaire ou un tableau de type simple).
Voir également
Langage de programmation - C - Référence de procédures et fonctions - memcmp
Références
Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 733.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 175.
Dernière mise à jour : Lundi, le 3 août 2015