C Zeichenketten

Page updated: 22. Juli 2004


Inhalt: C-Stil Zeichenketten - Headerdateien - Hinweise zum Gebrauch der Funktionen

Demoprogramm strings.c

C-Stil Zeichenketten.

Eine Zeichenkette (engl. string) wird in C nicht als gesonderter Datentyp betrachtet, sondern als Feld aus Zeichen vom Typ char (Beachte dazu die Hinweise Kapitel A.3 - Variable). Deshalb sind keine Headerdateien allein wegen der Variablendeklaration oder feldüblicher Zugriffe auf Einzelzeichen nötig. Die C Zeichenketten sind null-terminiert, dh. hinter dem letzten Zeichen der Zeichenkette muß sich ein Byte mit dem Zahlenwert 0 befinden, dies ist bei der Deklaration der Länge des Feldes zu berücksichtigen.

TOP

Headerdateien.

Sollen jedoch Manipulationen an den Zeichenketten mit Funktionen durchgeführt werden, so sind Headerdateien nötig.
Headerdatei string.h
Über diese Headerdatei stehen Funktionen zur Manipulation von Zeichenketten zur Verfügung:

Kopierfunktionen:
void *memccpy(void *, const void *, int m, size_t n);
void *memcpy(void *, const void *, size_t n);
char *strcpy(char *s1, const char *s2);
char *strncpy(char *s1, const char *s2, size_t n);
void *memmove(void *, const void *, size_t n);

Vergleichsfunktionen:
int strcmp(const char *s1, const char *s2);
int strncmp(const char *s1, const char *s2, size_t n);
int memcmp(const void *, const void *, size_t n);
int strcasecmp(const char *s1, const char *s2);
int strncasecmp(const char *s1, const char *s2, size_t n);
int strcoll(const char *s1, const char *s2);
char *strdup(const char *s);
void *memset(void *, int, size_t n);
size_t strxfrm(char *s1, const char *s2, size_t n);

Verbinden (enl. concatenate) von Zeichenketten:
char *strcat(char *s1, const char *s2);
char *strncat(char *s1, const char *s2, size_t n);

Suchfunktionen:
size_t strspn(const char *s1, const char *s2);
size_t strcspn(const char *s1, const char *s2);
void *memchr(const void *, int, size_t n);
char *strchr(const char *s, int n);
char *strrchr(const char *s, int n);
char *strstr(const char *s1, const char *s2);
char *strpbrk(const char *s1, const char *s2);
char *strsep(char **stringp, const char *delim);
char *strtok(char *s1, const char *s2);
char *strtok_r(char *s1, const char *s2, char **);

Prüffunktionen:
char *strerror(int n);
int *strerror_r(int m, char *s, size_t n);
size_t strlen(const char *s);

Anmerkung: size_t ist ein vorzeichenloser int Datentyp.


Headerdatei ctype.h
Über diese Headerdatei stehen Funktionen zur Überprüfung von Inhalten der Zeichenketten zur Verfügung und die Umwandlung von Groß- zu Kleinbuchstaben bzw. umgekehrt:
int isalnum(int n);
int isalpha(int n);
int isblank(int n);
int iscntrl(int n);
int isdigit(int n);
int isgraph(int n);
int islower(int n);
int isprint(int n);
int ispunct(int n);
int isspace(int n);
int isupper(int n);
int isxdigit(int n);
int toascii(int n);
int tolower(int n);
int toupper(int n);
int _toupper(int n);
int _tolower(int n);
Zu der Bedeutung der Funktionen siehe Compiler Manual. Einige Funktionen sind im Beispielprogramm demonstriert.

TOP

Hinweise zum Gebrauch der Funktionen.

Als Beispiel diene die Funktion zum Kopieren einer Zeichenkette in eine andere Variable:

char *strcpy(char *s1, const char *s2);

In der Parameterliste findet sich char *s, dh. es muß ein Zeiger auf eine Adresse einer null-terminierten Zeichenkette übergeben werden. Dies kann auf 2 Arten geschehen, durch:
In der Parameterliste findet sich oftmals const char *s. Dann darf ein Zeiger auf eine Adresse einer null-terminierten Zeichenkette übergeben werden wie bei char *s und es darf auch eine Konstante einer Zeichenkette übergeben werden. Letzteres ist im Beispielprogramm mit "Elefant" geschehen.

Viele Funktionen haben den Rückgabetyp char *, also einen Zeiger auf eine null-terminierte Zeichenkette. Zumeist ist es die Adresse des Zieles der Operation durch die Funktion. Genaueres zeigt Ihnen das Compilermanual auf.

TOP



Dr. J. Kubiak j.kubiak@gmx.net