memcmp ist definiert in der string
, die in C über string.h
, bzw. in C++ über cstring
eingebunden wird.
memcmp() vergleicht zwei Speicherbereiche über eine wählbare Größe. Der Rückgabewert ist 0, wenn die Speicherbereiche gleich sind.
#include <string.h> void * memcmp( void const * first, void const * second, size_t size );
first: Speicherblock (mindestens der Größe size
)
source: zu vergleichender Speicherblock (mindestens der Größe size
)
size: Anzahl maximal zu vergleichender Bytes (Der Typ size_t
entspricht i.d.R. int))
Return value: Ein Integer, das wie folgt interpretiert wird
Rückgabewert | Bedeutung |
---|---|
0 | Die verglichenen Zeichen hatten identische Werte |
> 0 | Die verglichenen Zeichen waren nicht identisch, der erste unterschiedliche Wert war bei first größer als bei second |
< 0 | Die verglichenen Zeichen waren nicht identisch, der erste unterschiedliche Wert war bei first kleiner als bei second |
Ist size
größer als einer der beiden zu vergleichenden Speicherblöcke findet ein lesender Zugriff auf Speicherbereiche statt, die nicht dem Programm zugeordnet sind. Dies endet daher häufig in einem Programmabsturz.
#include <string.h> // definiert memcmp #include <stdio.h> // definiert printf #include <stdlib.h> // definiert EXIT_SUCCESS char const * string = "programming is fun"; char const * identical = "programming is fun"; char const * greater = "programming is the best"; char const * less = "programming is boring"; int main( void ) { int length = strlen( string ); printf( "%s - %s: %d\n", identical, string, memcmp( identical, string, length ) ); printf( "%s - %s: %d\n", greater, string, memcmp( greater, string, length ) ); printf( "%s - %s: %d\n", less, string, memcmp( less, string, length ) ); return EXIT_SUCCESS; }
Ausgabe:
programming is fun - programming is fun: 0 programming is the best - programming is fun: 1 programming is boring - programming is fun: -1