memcmp
|
Definiert in Header
<string.h>
|
||
|
int
memcmp
(
const
void
*
lhs,
const
void
*
rhs,
size_t
count
)
;
|
||
Vergleicht die ersten count Bytes der Objekte, auf die lhs und rhs zeigen. Der Vergleich erfolgt lexikografisch.
Das Vorzeichen des Ergebnisses ist das Vorzeichen der Differenz zwischen den Werten des ersten Bytepaares (beide interpretiert als unsigned char ), die sich in den verglichenen Objekten unterscheiden.
Das Verhalten ist undefiniert, wenn der Zugriff über das Ende eines der Objekte hinaus erfolgt, auf die lhs und rhs zeigen. Das Verhalten ist undefiniert, wenn entweder lhs oder rhs ein Nullzeiger ist.
Inhaltsverzeichnis |
Parameter
| lhs, rhs | - | Zeiger auf die zu vergleichenden Objekte |
| count | - | Anzahl der zu prüfenden Bytes |
Rückgabewert
Negativer Wert, wenn lhs vor rhs in lexikographischer Reihenfolge erscheint.
Null, wenn lhs und rhs gleich sind, oder wenn count null ist.
Positiver Wert, wenn lhs nach rhs in lexikografischer Reihenfolge erscheint.
Hinweise
Diese Funktion liest Objektrepräsentationen , nicht die Objektwerte, und ist typischerweise nur für Byte-Arrays sinnvoll: Strukturen können Padding-Bytes mit undefinierten Werten enthalten, die Werte von Bytes hinter dem letzten gespeicherten Member in einer Union sind undefiniert, und ein Typ kann zwei oder mehr Repräsentationen für denselben Wert haben (verschiedene Kodierungen für + 0 und - 0 oder für + 0.0 und – 0.0 , undefinierte Padding-Bits innerhalb des Typs).
Beispiel
#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); }
Ausgabe:
abc precedes abd in lexicographical order abd follows abc in lexicographical order abc compares equal to abc in lexicographical order
Referenzen
- C23-Standard (ISO/IEC 9899:2024):
-
- 7.24.4.1 Die memcmp-Funktion (S.: TBD)
- C17-Standard (ISO/IEC 9899:2018):
-
- 7.24.4.1 Die memcmp-Funktion (S. 266)
- C11-Standard (ISO/IEC 9899:2011):
-
- 7.24.4.1 Die memcmp-Funktion (S: 365)
- C99-Standard (ISO/IEC 9899:1999):
-
- 7.21.4.1 Die memcmp-Funktion (S: 328)
- C89/C90-Standard (ISO/IEC 9899:1990):
-
- 4.11.4.1 Die memcmp-Funktion
Siehe auch
|
vergleicht zwei Zeichenketten
(Funktion) |
|
|
vergleicht eine bestimmte Anzahl von Zeichen zweier Zeichenketten
(Funktion) |
|
|
C++-Dokumentation
für
memcmp
|
|