Namensräume
Varianten
Aktionen

strncmp

Von cppreference.com
< c‎ | string‎ | byte
Definiert in Header <string.h>
int strncmp( const char* lhs, const char* rhs, size_t count );

Vergleicht höchstens count Zeichen von zwei möglicherweise nullterminierten Arrays. Der Vergleich erfolgt lexikographisch. Zeichen nach dem Nullzeichen werden nicht verglichen.

Das Vorzeichen des Ergebnisses ist das Vorzeichen der Differenz zwischen den Werten des ersten Paares von Zeichen (beide als unsigned char interpretiert), die in den verglichenen Arrays unterschiedlich sind.

Das Verhalten ist undefiniert, wenn auf einen Bereich über das Ende eines der Arrays lhs oder rhs zugegriffen wird. Das Verhalten ist undefiniert, wenn lhs oder rhs ein Nullzeiger ist.

Inhalt

[bearbeiten] Parameter

lhs, rhs - Zeiger auf die möglicherweise nullterminierten Arrays, die verglichen werden sollen
zählt - Maximale Anzahl von zu vergleichenden Zeichen

[bearbeiten] Rückgabewert

Negativer Wert, wenn lhs lexikographisch vor rhs kommt.

Null, wenn lhs und rhs gleich sind oder wenn count Null ist.

Positiver Wert, wenn lhs lexikographisch nach rhs kommt.

[bearbeiten] Hinweise

Diese Funktion ist nicht gebietsschema-sensitiv, im Gegensatz zu strcoll und strxfrm.

[bearbeiten] Beispiel

#include <stdio.h>
#include <string.h>
 
void demo(const char* lhs, const char* rhs, int sz)
{
    const int rc = strncmp(lhs, rhs, sz);
    if (rc < 0)
        printf("First %d chars of [%s] precede [%s]\n", sz, lhs, rhs);
    else if (rc > 0)
        printf("First %d chars of [%s] follow [%s]\n", sz, lhs, rhs);
    else
        printf("First %d chars of [%s] equal [%s]\n", sz, lhs, rhs);
}
int main(void)
{
    const char* string = "Hello World!";
    demo(string, "Hello!", 5);
    demo(string, "Hello", 10);
    demo(string, "Hello there", 10);
    demo("Hello, everybody!" + 12, "Hello, somebody!" + 11, 5);
}

Ausgabe

First 5 chars of [Hello World!] equal [Hello!]
First 10 chars of [Hello World!] follow [Hello]
First 10 chars of [Hello World!] precede [Hello there]
First 5 chars of [body!] equal [body!]

[bearbeiten] Referenzen

  • C23-Standard (ISO/IEC 9899:2024)
  • 7.24.4.4 Die Funktion strncmp (p: TBD)
  • C17-Standard (ISO/IEC 9899:2018)
  • 7.24.4.4 Die Funktion strncmp (p: TBD)
  • C11-Standard (ISO/IEC 9899:2011)
  • 7.24.4.4 Die Funktion strncmp (p: 366)
  • C99-Standard (ISO/IEC 9899:1999)
  • 7.21.4.4 Die Funktion strncmp (p: 329)
  • C89/C90-Standard (ISO/IEC 9899:1990)
  • 4.11.4.4 Die Funktion strncmp

[bearbeiten] Siehe auch

vergleicht zwei Strings
(Funktion) [bearbeiten]
vergleicht eine bestimmte Anzahl von Zeichen aus zwei breiten Zeichenketten
(Funktion) [bearbeiten]
vergleicht zwei Puffer
(Funktion) [bearbeiten]
vergleicht zwei Strings gemäß der aktuellen Locale
(Funktion) [bearbeiten]
C++ Dokumentation für strncmp