Teil 11 : Bibliotheken - Stringverarbeitung I |
<string.h> |
Bei den folgenden Befehlen muß die Headerdatei <string.h> durch
ein
#include <string.h> |
eingebunden werden! In den Beispielen gelten folgende Variablenvereinbarungen:
char *a;
char *b; char c; int n;
|
strcat ( char *a , char *b ) |
Es wird an a die Zeichenfolge von b angehängt.
#include <string.h> void main (void)
char *b = "bei AOL"; printf ("\na = %s\nb = %s\n",a,b);
strcat ( a, b ); printf("\na = %s\n",a); |
Das Beispiel gibt erst die Einzelnentrings aus und danach den neuen String a. Das fertige Programm liefert also:
strncat ( char *a , char *b , int n ) |
Es wird wie bei strcat b an a angehängt. Jedoch
nur maximal n Zeichen von b werden angehängt..
#include <string.h> void main (void)
char *b = "bei AOL macht Spasz"; int n = 7; printf ("\na = %s\nb = %s\n",a,b); /*
Jedoch nur maximal n=7 Zeichen von b strncat ( a, b ); printf("\na = %s\n",a); |
Nachdem wir das Programm starten, erhalten wir
int m = strcmp ( char *a , char *b ) |
Die beiden Zeichenketten werden miteinander verglichen.Dabei werden
von links beginnend alle Zeichen miteinander verglichen und bei den ersten
Zeichen die ungleich sind entscheided, welches Zeichen größer
ist und somit welcher Wert als Ergebnis nach m zurückgegeben
wird. Im einzelnen sind das...
|
In einem Programm sieht das dann so aus:
#include <string.h> void main (void)
char *b = "C-Kurs 2"; /*
miteinander verglichen printf ("\na = %s",a); printf ("\nb = %s\n\n",b); printf ("\nstrcmp (a,b) = %d\n", strcmp (a,b) ); printf ("\nstrcmp (a,a) = %d\n", strcmp (a,a) ); printf ("\nstrcmp (b,a) = %d\n", strcmp (b,a) ); |
Das Ergebnis beim starten des Programms sieht wie folgt aus:
Nach der Eingangserläuterung kann man sich denken, das die Länge nichts mit dem Ergebnis zu tun hat. Um das zu überprüfen geben wir folgende Strings ein und sehen, das dem tatsächlich so ist.
int m = strncmp ( char *a , char *b , int n ) |
Die Funktion ist fast die selbe wie strcmp mit dem Unterschied,
das nur die ersten n Zeichen verglichen werden. Alle nachfolgenden
Zeichen werden ignoriert. Die Ergebnisse sind wie bei strcmp(..)
.
#include <string.h> void main (void)
char *b = "Basstrompeter"; /*
miteinander verglichen printf ("\na = %s",a); printf ("\nb = %s\n\n",b); printf ("\nstrncmp (a,b,3) = %d\n", strncmp (a,b,3) ); printf ("\nstrncmp (a,a,3) = %d\n", strncmp (a,a,3) ); printf ("\nstrncmp (b,a,3) = %d\n", strncmp (b,a,3) ); |
strcpy ( char *a , char *b ) |
Der Inhalt von b wird nach a kopiert. Das Beispielprogramm....
#include <string.h> void main (void)
char *b = "AOL C-Kurs"; printf ("\n%s",a); /* jetzt wird b in a kopiert */
|
...gibt folgendes aus
strncpy ( char *a , char *b , int n ) |
Es werden höchstens n Zeichen von b nach a
kopiert.Der Rest des Strings bleibt erhalten.
#include <string.h> void main (void)
char *b = "AOL C-Kurs"; int n = 3; strncpy (b,a,n);
|
...gibt folgendes aus
Wenden wir das an , was wir über positionierung von Zeigern lernten,
so kann man Textstellen beliebig plaziert in andere Strings schreiben,
wie das folgende Beispiel zeigt.
#include <string.h> void main (void)
char *b = "Kurse";
/* an x-te Stelle, hier x=13 */
strncpy ( a+x, b, n);
|
..und haben somit die 5 Buchstaben von 13.ter Stelle ab in a ersetzt durch die in b stehenden und haben folgendes Erhalten.
int n = strlen ( char *a ) |
Es wird die Länge der Zeichenkette ( ohne /0 ) nach n
zurückgegeben ( s. dazu auch Teil 1
)
#include <string.h> void main (void)
int n; n = strlen (a);
|
Als Ergebnis erhalten wir nach dem Programmstart
char *b = strchr ( char *a , char c ) |
Es wird String a nach dem Buchstaben c durchsucht und
ein Zeiger auf die Stelle in a nach b zurückgegeben,
an der sich der Buchstabe c zuerst befindet. Existiert kein Buchstabe,
so wird ein NULL zurückgegeben.
#include <string.h> void main (void)
printf ("%s" , strchr (a , 'S') ); |
gibt folgendes aus
Es wird also alles ab dem ersten 'S' ausgegeben.
char *b = strrchr ( char *a , char c ) |
Es wird String a nach dem Buchstaben c durchsucht und
ein Zeiger auf die Stelle in a nach b zurückgegeben,
an der sich der Buchstabe c zuletzt befindet. Existiert kein Buchstabe,
so wird ein NULL zurückgegeben. Folgendes Beispielprogramm
#include <string.h> void main (void)
printf ("%s" , strrchr (a , 'S') ); |
gibt folgendes aus
Es wird hier alles nach dem letzten 'S' ausgegeben.
...das Obligatorische |
Autor: Sebastian Cyris PCDBascht@aol.com
Dieser C-Kurs dient nur zu Lehrzwecken! Eine Vervielfältigung ist ohne vorherige Absprache mit dem Autor verboten! Die verwendete Software unterliegt der GPL und unterliegt der Software beiliegenden Bestimmungen zu deren Nutzung! Jede weitere Lizenzbestimmung die der benutzten Software beiliegt, ist zu beachten!