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 firstgrößer als beisecond | 
| < 0 | Die verglichenen Zeichen waren nicht identisch, der erste unterschiedliche Wert war bei firstkleiner als beisecond | 
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