.\" -*- coding: UTF-8 -*- .\" Copyright 1993 David Metcalfe (david@prism.demon.co.uk) .\" and Copyright 2020 Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" %%%LICENSE_END .\" .\" References consulted: .\" Linux libc source code .\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991) .\" 386BSD man pages .\" Modified Sat Jul 24 18:08:52 1993 by Rik Faith (faith@cs.unc.edu) .\" Modified 2001-08-31, aeb .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH STRCMP 3 "11. April 2020" "" Linux\-Programmierhandbuch .SH BEZEICHNUNG strcmp, strncmp \- Vergleich zweier Zeichenketten .SH ÜBERSICHT .nf \fB#include \fP .PP \fBint strcmp(const char *\fP\fIs1\fP\fB, const char *\fP\fIs2\fP\fB);\fP .PP \fBint strncmp(const char *\fP\fIs1\fP\fB, const char *\fP\fIs2\fP\fB, size_t \fP\fIn\fP\fB);\fP .fi .SH BESCHREIBUNG Die Funktion \fBstrcmp\fP() vergleicht die beiden Zeichenketten \fIs1\fP und \fIs2\fP miteinander. Die Locale wird nicht berücksichtigt (für eine Locale\-berücksichtigende Vergleichsfunktion siehe \fBstrcoll\fP(3)). Der Vergleich erfolgt mittels Zeichen (»character«) ohne Vorzeichen. .PP \fBstrcmp\fP() liefert eine Ganzzahl zurück, die das Ergebnis des Vergleichs wie folgt anzeigt: .IP \(bu 2 0, falls \fIs1\fP und \fIs2\fP identisch sind; .IP \(bu ein negativer Wert, falls \fIs1\fP kleiner als \fIs2\fP ist; .IP \(bu ein positiver Wert, falls \fIs1\fP größer als \fIs2\fP ist. .PP Die Funktion \fBstrncmp\fP() ist ähnlich. Der Unterschied ist, dass \fBstrncmp\fP() (höchstens) die ersten \fIn\fP Bytes von \fIs1\fP und \fIs2\fP vergleicht. .SH RÜCKGABEWERT Die Funktionen \fBstrcmp\fP() und \fBstrncmp\fP() geben eine ganze Zahl zurück. Die Zahl ist kleiner, gleich oder größer als Null, wenn \fIs1\fP gefunden wurde und kleiner, gleich oder größer als \fIs2\fP ist (bzw. die ersten \fIn\fP Byte von \fIs1\fP). .SH ATTRIBUTE Siehe \fBattributes\fP(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke. .TS allbox; lbw19 lb lb l l l. Schnittstelle Attribut Wert T{ \fBstrcmp\fP(), \fBstrncmp\fP() T} Multithread\-Fähigkeit MT\-Safe .TE .SH "KONFORM ZU" POSIX.1\-2001, POSIX.1\-2008, C89, C99, SVr4, 4.3BSD. .SH ANMERKUNGEN POSIX.1 spezifiziert nur, dass: .RS .PP 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 \fIunsigned char\fP interpretiert werden. .RE .PP In Glibc, wie auch den meisten anderen Implementierungen, ist der Rückgabewert das arithmetische Ergebnis der Rechnung, bei der das letzte verglichene Byte in \fIs2\fP vom letzten verglichenen Byte in \fIs1\fP abgezogen wird. (Falls die zwei Zeichen identisch sind, ist die Differenz 0.) .SH BEISPIELE Das nachfolgende Programm kann zur Darstellung der Aktion von \fBstrcmp\fP() (wenn zwei Argumente übergeben werden) und \fBstrncmp\fP() (wenn drei Argumente übergeben werden) verwandt werden. Zuerst ein paar Beispiele zum Einsatz von \fBstrcmp\fP(): .PP .in +4n .EX $ \fB./string_comp ABC ABC\fP und sind identisch $ \fB./string_comp ABC AB\fP # »C« ist ASCII 67; »C« \- »\0« = 67 ist größer als (67) $ \fB./string_comp ABA ABZ\fP # »A« ist ASCII 65; »Z« ist ASCII 90 ist kleiner als (\-25) $ \fB./string_comp ABJ ABC\fP ist größer als (7) $ .\fB/string_comp $\(aq\e201\(aq A\fP # 0201 \- 0101 = 0100 (oder 64 dezimal) ist größer als (64) .EE .in .PP Das letzte Beispiel verwendet eine \fBbash\fP(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. .PP Und dann ein paar Beispiele mit \fBstrncmp\fP(): .PP .in +4n .EX $ \fB./string_comp ABC AB 3\fP ist größer als (67) $ \fB./string_comp ABC AB 2\fP und sind identisch in den ersten 2 Byte .EE .in .SS Programmquelltext \& .EX /* string_comp.c Lizenziert unter der GNU General Public License v2 oder neuer. */ #include #include #include int main(int argc, char *argv[]) { int res; if (argc < 3) { fprintf(stderr, "Aufruf: %s []\en", 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(" und sind identisch"); if (argc > 3) printf(" in den ersten %d Byte\en", atoi(argv[3])); printf("\en"); } else if (res < 0) { printf(" ist kleiner als (%d)\en", res); } else { printf(" ist größer als (%d)\en", res); } exit(EXIT_SUCCESS); } .EE .SH "SIEHE AUCH" \fBbcmp\fP(3), \fBmemcmp\fP(3), \fBstrcasecmp\fP(3), \fBstrcoll\fP(3), \fBstring\fP(3), \fBstrncasecmp\fP(3), \fBstrverscmp\fP(3), \fBwcscmp\fP(3), \fBwcsncmp\fP(3), \fBascii\fP(7) .SH KOLOPHON Diese Seite ist Teil der Veröffentlichung 5.10 des Projekts Linux\-\fIman\-pages\fP. Eine Beschreibung des Projekts, Informationen, wie Fehler gemeldet werden können, sowie die aktuelle Version dieser Seite finden sich unter \%https://www.kernel.org/doc/man\-pages/. .PP .SH ÜBERSETZUNG Die deutsche Übersetzung dieser Handbuchseite wurde von Markus Schmitt , Martin Eberhard Schauer und Helge Kreutzmann erstellt. .PP Diese Übersetzung ist Freie Dokumentation; lesen Sie die .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen. .PP Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die .MT debian-l10n-german@lists.debian.org Mailingliste der Übersetzer .ME .