string(3C) string(3C)
NAME
string: strcat, strdup, strncat, strcmp, strncmp, strcpy, strncpy,
strlen, strchr, strrchr, strpbrk, strspn, strcspn, strtok, strstr -
Zeichenketten bearbeiten
SYNTAX
#include <string.h>
char *strcat(char *s1, const char *s2);
char *strdup(const char *s1);
char *strncat(char *s1, const char *s2, sizet n);
int strcmp(const char *s1, const char *s2);
int strncmp(const char *s1, const char *s2, sizet n);
char *strcpy(char *s1, const char *s2);
char *strncpy(char *s1, const char *s2, sizet n);
sizet strlen(const char *s);
char *strchr(const char *s, int c);
char *strrchr(const char *s, int c);
char *strpbrk(const char *s1, const char *s2);
sizet strspn(const char *s1, const char *s2);
sizet strcspn(const char *s1, const char *s2);
char *strtok(char *s1, const char *s2);
char *strstr(const char *s1, const char *s2);
BESCHREIBUNG
Die Argumente s, s1 und s2 zeigen auf Zeichenketten. Die Funktionen
strcat(), strncat(), strcpy(), strncpy() und strtok() verändern die
Zeichenkette s1. Diese Funktionen prüfen nicht, ob das Array, auf das
s1 zeigt, über seine Grenzen hinaus beschrieben wird.
strcat() hängt eine Kopie der Zeichenkette s2, einschließlich des
abschließenden Nullbytes, am Ende der Zeichenkette s1 an. strncat()
hängt maximal n Bytes an. Die Funktionen liefern einen Zeiger auf das
mit einem Nullbyte abgeschlossene Ergebnis. Das erste Byte von s2
überschreibt das Nullbyte am Ende von s1.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
string(3C) string(3C)
strcmp() vergleicht die Argumente und liefert eine ganze Zahl zurück,
die kleiner, gleich oder größer als 0 ist, abhängig davon, ob s1 lexi-
kographisch kleiner, gleich oder größer als s2 ist. strncmp() führt
denselben Vergleich aus, beschränkt sich dabei jedoch auf maximal n
Bytes. Bytes, die nach einem Nullbyte stehen, werden nicht verglichen.
strcpy() kopiert die Zeichenkette s2 nach s1, einschließlich des
abschließenden Nullbytes; nachdem das Nullbyte kopiert wurde, stoppt
der Kopiervorgang. strncpy() kopiert genau n Bytes, wobei Teile von s2
abgeschnitten werden, oder, falls notwendig, Nullbytes zu s1 hinzuge-
fügt werden. Das Ergebnis ist nicht mit einem Nullbyte abgeschlossen,
wenn die Länge von s2 größer oder gleich n Bytes ist. Jede Funktion
liefert s1 zurück.
strdup() liefert einen Zeiger auf eine neue Zeichenkette zurück, wel-
che eine Kopie der Zeichenkette ist, auf die s1 zeigt. Der Speicher-
platz für die neue Zeichenkette wird mit malloc(3C) zugewiesen. Wenn
die neue Zeichenkette nicht angelegt werden kann, wird ein Nullzeiger
zurückgegeben.
strlen() berechnet die Anzahl der Bytes in der Zeichenkette, auf die s
zeigt, ohne abschließendes Nullbyte.
strchr() (oder strrchr()) liefert einen Zeiger auf das erste (letzte)
Auftreten von c (umgewandelt in char) in der Zeichenkette s; tritt c
nicht auf, so wird ein Nullzeiger zurückgegeben. Das Nullbyte, welches
eine Zeichenkette abschließt, wird als Teil der Zeichenkette betrach-
tet.
strpbrk() liefert einen Zeiger auf das erste Auftreten eines Bytes aus
s2 in der Zeichenkette s1; ist in s1 kein Byte aus s2 enthalten, so
wird ein Nullzeiger zurückgegeben.
strspn() liefert die Länge von s1 zurück. Zur Anzeige eines Fehlers
ist kein Rückgabewert reserviert.
strcspn() berechnet die Länge des größten Anfangssegments der Zeichen-
kette, auf die s1 zeigt, und die nur aus den Bytes besteht, die nicht
in der Zeichenkette enthalten sind, auf die s2 zeigt.
strtok() verarbeitet eine Zeichenkette s1, die aus einer Folge von
null oder mehr Texttokens besteht, die durch eine oder mehrere Bytes
aus der Trennzeichenkette s2 getrennt sind. Der erste Aufruf, bei dem
die Zeichenkette s1 angegeben wird, liefert einen Zeiger auf das erste
Byte des ersten Tokens zurück und schreibt ein Nullbyte in die Zei-
chenkette s1 sofort hinter das zurückgelieferte Token. Die Funktion
verwaltet die Position in der Zeichenkette zwischen mehreren Aufrufen
[deshalb muß eine Zeichenkette ganz abgearbeitet sein, bevor strtok()
mit einer neuen Zeichenkette aufgerufen werden kann], so daß spätere
Aufrufe (die als erstes Argument einen Nullzeiger enthalten) die Zei-
chenkette s1 direkt nach dem Token bearbeiten. Auf diese Weise kann
die komplette Zeichenkette s1 verarbeitet werden, bis kein Token mehr
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
string(3C) string(3C)
verfügbar ist. Die Trennzeichenkette s2 kann von Aufruf zu Aufruf
variieren. Ist kein Token mehr in s1 vorhanden, wird ein Nullzeiger
zurückgeliefert.
strstr() findet das erste Auftreten der Zeichenkette s2 innerhalb der
Zeichenkette s1 (ohne das abschließende Nullbyte). strstr() liefert
einen Zeiger auf die gefundene Zeichenkette beziehungsweise einen
Nullzeiger zurück, wenn die Zeichenkette nicht gefunden wurde. Wenn s2
auf eine Zeichenkette der Länge 0 zeigt (d. h. die leere Zeichen-
kette), liefert die Funktion s1 zurück.
FEHLER
Die Funktion strdup() kann bei folgender Bedingung fehlschlagen:
ENOMEM Der verfügbare Speicherplatz reicht nicht aus.
RÜCKGABEWERT
Die Funktion strcat() liefert s1 zurück. Zur Anzeige eines Fehlers ist
kein Rückgabewert reserviert.
Bei erfolgreicher Ausführung liefert die Funktion strdup() einen Zei-
ger auf eine neue Zeichenkette zurück. Andernfalls liefert sie einen
Nullzeiger zurück und setzt errno zur Anzeige des Fehlers.
Die Funktion strncat() liefert s1 zurück. Zur Anzeige eines Fehlers
ist kein Rückgabewert reserviert.
Bei erfolgreicher Ausführung liefert strcmp() eine ganze Zahl größer,
gleich oder kleiner als 0 zurück, wenn die Zeichenkette, auf die s1
zeigt, größer, gleich oder kleiner als die Zeichenkette ist, auf die
s2 zeigt.
Bei erfolgreicher Ausführung liefert strncmp() eine ganze Zahl größer,
gleich oder kleiner als 0 zurück, wenn das möglicherweise nulltermi-
nierte Array, auf das s1 zeigt, größer, gleich oder kleiner als das
möglicherweise nullterminierte Array ist, auf das s2 zeigt.
Die Funktion strcpy() liefert s1 zurück. Zur Anzeige eines Fehlers ist
kein Rückgabewert reserviert.
Die Funktion strncpy() liefert s1 zurück. Zur Anzeige eines Fehlers
ist kein Rückgabewert reserviert.
Die Funktion strlen() liefert die Länge von s zurück. Zur Anzeige
eines Fehlers ist kein Rückgabewert reserviert.
Bei erfolgreicher Ausführung liefert strchr() einen Zeiger auf das
Byte beziehungsweise einen Nullzeiger zurück, wenn das Byte nicht
gefunden wurde.
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98
string(3C) string(3C)
Bei erfolgreicher Ausführung liefert strrchr() einen Zeiger auf das
Byte beziehungsweise einen Nullzeiger zurück, wenn c in der Zeichen-
kette nicht vorkommt.
Bei erfolgreicher Ausführung liefert strpbrk() einen Zeiger auf das
Byte beziehungsweise einen Nullzeiger zurück, wenn kein Byte aus s2 in
s1 vorkommt.
Die Funktion strspn() liefert die Länge von s1 zurück. Zur Anzeige
eines Fehlers ist kein Rückgabewert reserviert.
Die Funktion strcspn() liefert die Länge von s1 zurück. Zur Anzeige
eines Fehlers ist kein Rückgabewert reserviert.
Bei erfolgreicher Ausführung liefert strtok() einen Zeiger auf das
erste Byte eines Token zurück. Wenn kein Token vorhanden ist, gibt
strtok() einen Nullzeiger zurück.
Bei erfolgreicher Ausführung liefert strstr() einen Zeiger auf die
gefundene Zeichenkette beziehungsweise einen Nullzeiger zurück, wenn
die Zeichenkette nicht gefunden wurde.
HINWEISE
Jede dieser Funktionen geht standardmäßig von der internationalen
C-Umgebung aus. Bei einigen internationalen Umgebungen sollte vor der
Übergabe der Zeichenketten an die Funktionen die Funktion strxfrm()
auf die Zeichenketten angewendet werden.
SIEHE AUCH
malloc(3C), setlocale(3C), strxfrm(3C), string(5).
Seite 4 Reliant UNIX 5.44 Gedruckt 11/98