plucky (3) strcmp.3.gz

Provided by: manpages-de-dev_4.25.1-1_all bug

BEZEICHNUNG

       strcmp, strncmp - Vergleich zweier Zeichenketten

BIBLIOTHEK

       Standard-C-Bibliothek (libc, -lc)

ÜBERSICHT

       #include <string.h>

       int strcmp(const char *s1, const char *s2);
       int strncmp(const char s1[.n], const char s2[.n], size_t n);

BESCHREIBUNG

       Die  Funktion  strcmp()  vergleicht die beiden Zeichenketten s1 und s2 miteinander. Die Locale wird nicht
       berücksichtigt (für eine Locale-berücksichtigende Vergleichsfunktion  siehe  strcoll(3)).  Der  Vergleich
       erfolgt mittels Zeichen (»character«) ohne Vorzeichen.

       strcmp() liefert eine Ganzzahl zurück, die das Ergebnis des Vergleichs wie folgt anzeigt:

       •  0, falls s1 und s2 identisch sind;

       •  ein negativer Wert, falls s1 kleiner als s2 ist;

       •  ein positiver Wert, falls s1 größer als s2 ist.

       Die  Funktion  strncmp()  ist ähnlich. Der Unterschied ist, dass strncmp() (höchstens) die ersten n Bytes
       von s1 und s2 vergleicht.

RÜCKGABEWERT

       Die Funktionen strcmp() und strncmp() geben eine ganze Zahl zurück. Die Zahl  ist  kleiner,  gleich  oder
       größer  als  Null,  wenn  s1 gefunden wurde und kleiner, gleich oder größer als s2 ist (bzw. die ersten n
       Byte von s1).

ATTRIBUTE

       Siehe attributes(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke.

       ┌────────────────────────────────────────────────────────────────────┬───────────────────────┬───────────┐
       │SchnittstelleAttributWert      │
       ├────────────────────────────────────────────────────────────────────┼───────────────────────┼───────────┤
       │strcmp(), strncmp()                                                 │ Multithread-Fähigkeit │ MT-Sicher │
       └────────────────────────────────────────────────────────────────────┴───────────────────────┴───────────┘

VERSIONEN

       POSIX.1 spezifiziert nur, dass:

              Das  Vorzeichen  eines  von  0  verschiedenen  Rückgabewertes  muss  durch  das   Vorzeichen   des
              Unterschiedes  zwischen  den  Werten  des  ersten  Byte-Paares,  die sich in den zu vergleichenden
              Zeichenketten  unterscheiden,  bestimmt  werden,  wobei  beide  Bytes  als   Typ   unsigned   char
              interpretiert werden.

       In Glibc, wie auch den meisten anderen Implementierungen, ist der Rückgabewert das arithmetische Ergebnis
       der Rechnung, bei der das letzte verglichene Byte in s2 vom letzten verglichenen  Byte  in  s1  abgezogen
       wird. (Falls die zwei Zeichen identisch sind, ist die Differenz 0.)

STANDARDS

       C11, POSIX.1-2008.

GESCHICHTE

       POSIX.1-2001, C89, SVr4, 4.3BSD.

BEISPIELE

       Das  nachfolgende  Programm  kann  zur Darstellung der Aktion von strcmp() (wenn zwei Argumente übergeben
       werden) und strncmp() (wenn drei Argumente übergeben werden) verwandt werden. Zuerst ein  paar  Beispiele
       zum Einsatz von strcmp():

           $ ./string_comp ABC ABC
           <str1> und <str2> sind identisch
           $ ./string_comp ABC AB      # »C« ist ASCII 67; »C« - »\0« = 67
           <str1> ist größer als <str2> (67)
           $ ./string_comp ABA ABZ     # »A« ist ASCII 65; »Z« ist ASCII 90
           <str1> ist kleiner als <str2> (-25)
           $ ./string_comp ABJ ABC
           <str1> ist größer als <str2> (7)
           $ ./string_comp $'\201' A   # 0201 - 0101 = 0100 (oder 64 dezimal)
           <str1> ist größer als <str2> (64)

       Das  letzte  Beispiel  verwendet  eine  bash(1)-spezifische Syntax, um eine Zeichenkette zu erzeugen, die
       einen 8-Bit-ASCII-Code enthält;  das  Ergebnis  zeigt,  dass  der  Zeichenkettenvergleich  vorzeichenlose
       Zeichen verwendet.

       Und dann ein paar Beispiele mit strncmp():

           $ ./string_comp ABC AB 3
           <str1> ist größer als <str2> (67)
           $ ./string_comp ABC AB 2
           <str1> und <str2> sind identisch in den ersten 2 Byte

   Programmquelltext

       /* string_comp.c

          Lizensiert unter der GNU General Public License v2 oder neuer.
       */
       #include <stdio.h>
       #include <stdlib.h>
       #include <string.h>

       int
       main(int argc, char *argv[])
       {
           int res;

           if (argc < 3) {
               fprintf(stderr, "Aufruf: %s <zeichenkette1> <zeichenkette2> [<län>]\n", argv[0]);
               exit(EXIT_FAILURE);
           }

           if (argc == 3)
               res = strcmp(argv[1], argv[2]);
           else
               res = strncmp(argv[1], argv[2], atoi(argv[3]));

           if (res == 0) {
               printf("<zeichenkette1> und <zeichenkette2> sind gleich");
               if (argc > 3)
                   printf(" in den ersten %d byte\n", atoi(argv[3]));
               printf("\n");
           } else if (res < 0) {
               printf("<zeichenkette1> ist kleiner als <zeichenkette2> (%d)\n", res);
           } else {
               printf("<zeichenkette1> ist größer als <zeichenkette2> (%d)\n", res);
           }

           exit(EXIT_SUCCESS);
       }

SIEHE AUCH

       memcmp(3),  strcasecmp(3),  strcoll(3),  string(3), strncasecmp(3), strverscmp(3), wcscmp(3), wcsncmp(3),
       ascii(7)

ÜBERSETZUNG

       Die deutsche Übersetzung dieser  Handbuchseite  wurde  von  Markus  Schmitt  <fw@math.uni-sb.de>,  Martin
       Eberhard Schauer <Martin.E.Schauer@gmx.de> und Helge Kreutzmann <debian@helgefjell.de> erstellt.

       Diese  Übersetzung  ist  Freie  Dokumentation;  lesen  Sie  die  GNU  General  Public  License  Version 3
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE
       HAFTUNG übernommen.

       Wenn  Sie  Fehler  in  der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die
       Mailingliste der Übersetzer ⟨debian-l10n-german@lists.debian.org⟩.