Als nächstes wollen wir uns eine String-Funktion anschauen, die zur Bearbeitung der nächsten
Aufgabe praktisch sein wird.
Dabei handelt es sich um die StrToc-Funktion, die wir hier an einem kleinen Beispiel einführen
wollen.
Die StrToc-Funktion teilt einen String in mehrere Token auf, die durch bestimmte Delimiter
gekennzeichnet sind.
Nehmen wir nun einmal an, wir haben einen String, der durch den Zeiger Command Line
referenziert ist und der heißt ls-lehrzeichen-binde-strich-l-lehrzeichen-slash-temp.
Wenn wir nun diesen String aufteilen wollen, sodass wir ihn zum Beispiel als Argument
an die exec-Funktion übergeben können, dann brauchen wir etwas, damit wir aus dem String
Command Line alle Token extrahieren, die durch Leerzeichen getrennt sind.
Und dies können wir machen, indem wir die String-Tog-Funktion mit dem Delimiter Leerzeichen
aufrufen, wobei der Leerzeichen hier in einem String steht.
Der Aufruf an Strittog erwartet zum einen den String, auf dem gearbeitet werden soll,
und eine Liste von Delimetern.
Der rückgabewehrte Funktion ist ein Character-Zeiger auf einem dieser Token innerhalb des Strings,
wobei der String an dieser Stelle durch Strittog zerstückelt wird und das Leerzeichen durch
ein terminierendes Backslash Null ersetzt wird.
Der erste Token, der also von Strittog zurückgegeben wird, ist ein Zeiger auf die Zeichenfolge
LS.
Möchte man sich mit Strittog den nächsten Token aus dem String holen, ruft man Strittog
nicht mehr mit einem Zeiger auf den String auf, sondern mit Null.
Damit weiß die Funktion, dass auf dem zuletzt übergebenen String weiter gearbeitet werden
soll.
Es wird ein nächster Aufruf von Strittog mit dem ersten Argument Null den String binstrich
klein l zurückliefern, der ebenfalls null terminiert wird.
Wenn wir das ganze wiederholen, dann wird ein String auf slash temp zurückgegeben.
Das interessante an der Stelle ist nun, dass ein Vorkommen des Leerzeichens nicht ersetzt
wurde, nämlich genau dieses vor dem Schrägstrich.
Falls die Strittog-Funktion innerhalb des initialen Strings keine weiteren Token mehr findet,
ist der Rückgabewert Null.
Wenn man die Obergrenze an vorhandenen Token bereits weiß, bevor man die Strittog-Funktion
aufruft, kann man die resultierenden Token recht einfach in einem Array speichern.
Durch ein bisschen Überlegen kann man vielleicht eine mögliche Obergrenze auf Basis der Länge
des Strings ermitteln.
Nun wollen wir uns die Strittog-Funktion nochmal ein bisschen genauer anschauen und dabei auf
die Argumente und den Rückgabewert eingehen.
Das erste Argument wurde ja bereits angesprochen, nämlich dass dies entweder ein Zeiger auf
ein String ist oder eben Null, wenn auf dem zuletzt übergebenen String weitergearbeitet
werden soll.
Das zweite Argument sind die Delimiter.
Das sind genau die Zeichen, die die einzelnen Token voneinander abtrennen.
Das ist ebenfalls ein String, wobei dieser String eher als Liste von Zeichen zu verstehen
ist, die allesamt als Delimiter gelten.
Es können also nicht gesamte Teil-Strings ersetzt werden, sondern immer nur einzelne
Zeichen.
In diesem Beispiel haben wir einen Delimiter, der aus den Whitespace-Zeichen, Leer-Zeichen,
Tapp und Newline besteht.
Wie vorhin schon angedeutet, werden falls mehrere Trennzeichen aufeinander folgen, nur
das erste Vorkommen durch ein Wechseleschnull ersetzt.
Zugänglich über
Offener Zugang
Dauer
00:03:39 Min
Aufnahmedatum
2020-06-21
Hochgeladen am
2020-06-21 23:16:36
Sprache
de-DE