Eine Einführung in die Programmiersprache C und die Grundlagen ...
Eine Einführung in die Programmiersprache C und die Grundlagen ...
Eine Einführung in die Programmiersprache C und die Grundlagen ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
<strong>E<strong>in</strong>e</strong> <strong>E<strong>in</strong>führung</strong> <strong>in</strong> <strong>die</strong> Informatik <strong>und</strong> <strong>die</strong> <strong>Programmiersprache</strong> C<br />
19.2 Str<strong>in</strong>g Funktionen <br />
In der Def<strong>in</strong>itionsdatei werden zwei Gruppen von Funktionen für Zeichenketten<br />
deklariert. Die erste Gruppe hat Namen, <strong>die</strong> mit str beg<strong>in</strong>nen <strong>und</strong> ist für mit \0 abgeschlossene<br />
Str<strong>in</strong>gs gedacht; <strong>die</strong> Namen der zweiten Gruppe beg<strong>in</strong>nen mit mem, <strong>die</strong>se s<strong>in</strong>d für re<strong>in</strong>e Speichermanipulationen<br />
vorgesehen. Sieht man von memmove ab, ist der Effekt der Kopierfunktionen <strong>und</strong>ef<strong>in</strong>iert,<br />
wenn sich der Ziel- <strong>und</strong> der Quellbereich überlappen.<br />
char *strcpy(char * s, const char * ct) Zeichenkette ct <strong>in</strong> Array s kopieren, <strong>in</strong>klusive '\0'; liefert s.<br />
char *strncpy(char * s, const char * ct, size_t n)<br />
Höchstens n Zeichen aus Str<strong>in</strong>g ct <strong>in</strong> Str<strong>in</strong>g s kopieren; liefert s. Mit '\0'<br />
auffüllen, wenn Str<strong>in</strong>g ct weniger als n Zeichen hat.<br />
char *strcat(char * s, const char * ct) Zeichenkette ct h<strong>in</strong>ten an <strong>die</strong> Zeichenkette s anfügen; liefert s.<br />
char *strncat(char * s, const char * ct, size_t n)<br />
Höchstens n Zeichen von ct h<strong>in</strong>ten an <strong>die</strong> Zeichenkette s anfügen <strong>und</strong> s mit<br />
'\0' abschliessen; liefert s.<br />
<strong>in</strong>t strcmp(const char * cs, const char * ct)<br />
Str<strong>in</strong>gs cs <strong>und</strong> ct vergleichen; liefert ct. (Re<strong>in</strong>er ASCII-Vergleich, nicht Lexikalisch)<br />
<strong>in</strong>t strncmp(const char * cs, const char * ct, size_t n)<br />
Höchstens n Zeichen von cs mit der Zeichenkette ct vergleichen; liefert ct.<br />
char *strchr(const char * cs, char c) Liefert Zeiger auf das erste c <strong>in</strong> cs oder NULL, falls nicht vorhanden.<br />
char *strrchr(const char * cs, char c) Liefert Zeiger auf das letzte c <strong>in</strong> cs, oder NULL, falls nicht vorhanden,<br />
size_t strspn(const char * cs, const char * ct)<br />
Liefert Anzahl der Zeichen am Anfang vom Str<strong>in</strong>g cs, <strong>die</strong> sämtliche im<br />
Str<strong>in</strong>g ct auch vorkommen.<br />
size_t strcspn(const char * cs, const char * ct)<br />
Liefert Anzahl der Zeichen am Anfang vom Str<strong>in</strong>g cs, <strong>die</strong> sämtliche im<br />
Str<strong>in</strong>g ct nicht vorkommen.<br />
char *strpbrk(const char * cs, const char * ct)<br />
Liefert Zeiger auf <strong>die</strong> Position <strong>in</strong> Str<strong>in</strong>g cs, an der irgende<strong>in</strong> Zeichen aus ct<br />
erstmals vorkommt, oder NULL, falls ke<strong>in</strong>es vorkommt.<br />
char *strstr(const char * cs, const char * ct)<br />
Liefert Zeiger auf erstes Auftreten von ct <strong>in</strong> cs oder NULL, falls nicht vorhanden.<br />
(Suchen von Str<strong>in</strong>g <strong>in</strong> anderem Str<strong>in</strong>g)<br />
size_t strlen(const char * cs)<br />
Liefert Länge von cs (ohne '\0').<br />
char *strerror(size_t n)<br />
Liefert Zeiger auf Zeichenkette, <strong>die</strong> <strong>in</strong> der Implementierung für den Fehler<br />
mit der Nummer n def<strong>in</strong>iert ist.<br />
char *strtok(char * s, const char * ct) strtok durchsucht s nach Zeichenfolgen, <strong>die</strong> durch Zeichen aus ct begrenzt<br />
s<strong>in</strong>d. (Zerlegt e<strong>in</strong>en Str<strong>in</strong>g <strong>in</strong> Teilstr<strong>in</strong>gs)<br />
Die mem... Funktionen s<strong>in</strong>d zur Manipulation von Speicherbereichen gedacht; sie behandeln den<br />
Wert \0 wie jeden anderen Wert, deshalb muss immer e<strong>in</strong>e Bereichslänge angegeben werden.<br />
void *memcpy(void * s, const void * ct, size_t n)<br />
Kopiert n Zeichen/Bytes von ct nach s; liefert s.<br />
void *memmove(void * s, const void * ct, size_t n)<br />
Wie memcpy, funktioniert aber auch, wenn sich <strong>die</strong> Bereiche überlappen.<br />
<strong>in</strong>t memcmp(const void * cs, const void * ct, size_t n)<br />
Vergleicht <strong>die</strong> ersten n Zeichen vom Bereich cs mit dem Bereich ct; Resultat<br />
analog zu strcmp.<br />
void *memchr(const void * cs, char c, size_t n)<br />
Liefert Zeiger auf das erste Byte mit dem Wert c <strong>in</strong> cs oder NULL, wenn<br />
das Byte <strong>in</strong> den ersten n Zeichen nicht vorkommt.<br />
void *memset(void * s, char c, size_t n) Setzt <strong>die</strong> ersten n Bytes von s auf den Wert c, liefert s. (Speicher füllen)<br />
Gedruckt am 10.09.2009 14:23:00 Letzte Änderung am: 10. September 2009 Version 2.4.1, I. Oesch 69/147