strncmp()

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

Funktion

strncmp() vergleicht zwei Strings bis maximal zum angegebenen Zeichen oder in einem der beiden Strings ein Nullbyte gefunden wurde.

Signatur

#include <string.h>
void * strncmp( char const * first, char const * second, size_t size );

first: erster String
source: zweiter String
size: Anzahl maximal zu vergleichender Zeichen (Der Typ size_t entspricht i.d.R. unsigned int))

Return value:

Rückgabewert Bedeutung
0 Die verglichenen Strings sind bis zum angegebenen Zeichen identisch
positiv Die verglichenen Strings sind nicht identisch, das erste unterschiedliche Zeichen war bei first größer als bei second
negativ Die verglichenen Strings sind nicht identisch, der erste unterschiedliche Zeichen war bei first kleiner als bei second

Fehlerquellen

Wurde bei einem Strings das Nullbyte vergessen und ist size größer als der jeweilige String ohne Nullbyte, so 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 strncmp
 
#include <stdio.h>       // definiert printf
#include <stdlib.h>      // definiert EXIT_SUCCESS
 
char const * string = "Hello World";
char const * identical = "Hello proggen.org";
char const * greater = "Salut";
char const * less = "Hallo";
 
int main( void )
{
  int const length = 5;
 
  printf( "%s - %s: %d\n", identical, string, strncmp( identical, string, length ) );
  printf( "%s - %s: %d\n",   greater, string, strncmp(   greater, string, length ) );
  printf( "%s - %s: %d\n",      less, string, strncmp(      less, string, length ) );
 
  return EXIT_SUCCESS;
}

Ausgabe:

Hello proggen.org - Hello World: 0
Salut - Hello World: 11
Hallo - Hello World: -4

siehe auch