strncmp ist definiert in der string
, die in C über string.h
, bzw. in C++ über cstring
eingebunden wird.
strncmp() vergleicht zwei Strings bis maximal zum angegebenen Zeichen oder in einem der beiden Strings ein Nullbyte gefunden wurde.
#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 |
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.
#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