memcmp()

memcmp ist definiert in der string, die in C über string.h, bzw. in C++ über cstring eingebunden wird.

Funktion

memcmp() vergleicht zwei Speicherbereiche über eine wählbare Größe. Der Rückgabewert ist 0, wenn die Speicherbereiche gleich sind.

Signatur

#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

Fehlerquellen

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.

Beispiel

#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

siehe auch