memcmp
|
Défini dans l'en-tête
<string.h>
|
||
|
int
memcmp
(
const
void
*
lhs,
const
void
*
rhs,
size_t
count
)
;
|
||
Compare les premiers count octets des objets pointés par lhs et rhs . La comparaison est effectuée de manière lexicographique.
Le signe du résultat est le signe de la différence entre les valeurs de la première paire d'octets (tous deux interprétés comme unsigned char ) qui diffèrent dans les objets comparés.
Le comportement est indéfini si l'accès se produit au-delà de la fin de l'un ou l'autre objet pointé par lhs et rhs . Le comportement est indéfini si lhs ou rhs est un pointeur nul.
Table des matières |
Paramètres
| lhs, rhs | - | pointeurs vers les objets à comparer |
| count | - | nombre d'octets à examiner |
Valeur de retour
Valeur négative si lhs apparaît avant rhs dans l'ordre lexicographique.
Zéro si lhs et rhs sont égaux, ou si count est zéro.
Valeur positive si lhs apparaît après rhs dans l'ordre lexicographique.
Notes
Cette fonction lit les représentations d'objets , pas les valeurs des objets, et n'est généralement significative que pour les tableaux d'octets : les structures peuvent avoir des octets de remplissage dont les valeurs sont indéterminées, les valeurs de tout octet au-delà du dernier membre stocké dans une union sont indéterminées, et un type peut avoir deux ou plusieurs représentations pour la même valeur (différents encodages pour + 0 et - 0 ou pour + 0.0 et – 0.0 , bits de remplissage indéterminés au sein du type).
Exemple
#include <stdio.h> #include <string.h> void demo(const char* lhs, const char* rhs, size_t sz) { for(size_t n = 0; n < sz; ++n) putchar(lhs[n]); int rc = memcmp(lhs, rhs, sz); const char *rel = rc < 0 ? " precedes " : rc > 0 ? " follows " : " compares equal "; fputs(rel, stdout); for(size_t n = 0; n < sz; ++n) putchar(rhs[n]); puts(" in lexicographical order"); } int main(void) { char a1[] = {'a','b','c'}; char a2[sizeof a1] = {'a','b','d'}; demo(a1, a2, sizeof a1); demo(a2, a1, sizeof a1); demo(a1, a1, sizeof a1); }
Sortie :
abc precedes abd in lexicographical order abd follows abc in lexicographical order abc compares equal to abc in lexicographical order
Références
- Norme C23 (ISO/IEC 9899:2024):
-
- 7.24.4.1 La fonction memcmp (p: TBD)
- Norme C17 (ISO/CEI 9899:2018) :
-
- 7.24.4.1 La fonction memcmp (p: 266)
- Norme C11 (ISO/CEI 9899:2011):
-
- 7.24.4.1 La fonction memcmp (p: 365)
- Norme C99 (ISO/IEC 9899:1999) :
-
- 7.21.4.1 La fonction memcmp (p: 328)
- Norme C89/C90 (ISO/IEC 9899:1990) :
-
- 4.11.4.1 La fonction memcmp
Voir aussi
|
compare deux chaînes de caractères
(fonction) |
|
|
compare un certain nombre de caractères de deux chaînes
(fonction) |
|
|
Documentation C++
pour
memcmp
|
|