MEMCMP |
Compare mémoire |
---|---|
Langage C | 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.
Algorithme
MODULE MEMCMP(ptr1, ptr2, n) * Comparer les n premiers octets des deux blocs de mémoire BOUCLE POUR i ← 0 JUSQU'A n - 1 FAIRE * Si les octets sont différents SI ptr1[i] != ptr2[i] ALORS * Retourner la différence entre les deux octets RETOURNE ptr1[i] - ptr2[i] FIN SI FIN BOUCLE POUR * Si tous les octets sont égaux, retourner 0 RETOURNE 0 |
Remarques
- Fonction de comparaison binaire : La fonction memcmp compare deux blocs de mémoire, octet par octet, sur une taille donnée. Elle permet de vérifier si deux sections de mémoire contiennent les mêmes données, ce qui est utile pour comparer des données binaires (par exemple, des tampons ou des structures en mémoire).
- Utilisation pour des données non textuelles : memcmp est utilisée pour comparer des données non textuelles, contrairement à des fonctions comme strcmp, étant destinées aux chaînes de caractères. Par exemple, elle est couramment utilisée pour comparer des tampons binaires, des fichiers, des structures ou tout autre type de données où la comparaison de chaque octet est nécessaire.
- Performance : La fonction memcmp est généralement optimisée pour des comparaisons rapides, notamment grâce à des opérations de comparaison parallèles ou des instructions processeur spécifiques. Cela en fait un choix approprié lorsque de grandes quantités de données doivent être comparées rapidement, tout en étant plus rapide que d'autres méthodes de comparaison de chaque octet de manière manuelle.
- Comparaison bit-à-bit : memcmp effectue une comparaison bit-à-bit, c'est-à-dire qu'elle compare chaque octet des blocs de mémoire jusqu'à ce qu'une différence soit trouvée ou que la limite de n octets soit atteinte. Cela signifie que même des petites différences dans les données (par exemple, dans les bits les moins significatifs) seront détectées immédiatement.
- Comportement avec des données non alignées : L'alignement de mémoire peut affecter la performance de memcmp, surtout si les blocs à comparer ne sont pas bien alignés en mémoire, ce qui peut être le cas avec des structures ou des types de données plus complexes. Cependant, memcmp est conçu pour fonctionner indépendamment de l'alignement des données, bien que les performances puissent varier selon les architectures.
- Comparaison sur des tailles arbitraires : La fonction memcmp compare exactement n octets, ce qui signifie que si les blocs de mémoire sont plus longs que n, elle s'arrête après n octets. Cela peut être utile pour des comparaisons partielles (par exemple, comparer uniquement une portion d'un fichier ou d'une structure), mais cela nécessite de bien spécifier la taille à comparer pour éviter des erreurs.
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 : Mardi, le 28 juillet 2015