07.02.2 strcat, Strings anhängen
This is a modal window.
Das Video konnte nicht geladen werden, da entweder ein Server- oder Netzwerkfehler auftrat oder das Format nicht unterstützt wird.
Formale Metadaten
Titel |
| |
Serientitel | ||
Anzahl der Teile | 110 | |
Autor | ||
Lizenz | CC-Namensnennung - keine kommerzielle Nutzung - Weitergabe unter gleichen Bedingungen 3.0 Deutschland: Sie dürfen das Werk bzw. den Inhalt zu jedem legalen und nicht-kommerziellen Zweck nutzen, verändern und in unveränderter oder veränderter Form vervielfältigen, verbreiten und öffentlich zugänglich machen, sofern Sie den Namen des Autors/Rechteinhabers in der von ihm festgelegten Weise nennen und das Werk bzw. diesen Inhalt auch in veränderter Form nur unter den Bedingungen dieser Lizenz weitergeben. | |
Identifikatoren | 10.5446/9525 (DOI) | |
Herausgeber | ||
Erscheinungsjahr | ||
Sprache | ||
Produzent |
Inhaltliche Metadaten
Fachgebiet | |
Genre |
Informatik 1, Winter 2010/201161 / 110
1
2
3
5
6
8
10
12
13
19
25
26
27
30
32
39
42
47
48
49
53
54
55
56
58
59
61
64
66
67
69
70
71
72
78
79
81
82
83
87
92
93
94
96
97
98
99
101
102
106
107
108
109
110
00:00
ZeichenketteNullCodeFunktion <Mathematik>Aktion <Informatik>UngleichungAchtBitCharakter <Topologie>DateiComputeranimation
Transkript: Deutsch(automatisch erzeugt)
00:02
Was hatte ich erzählt? Vergleichen von Zeichenketten, Zuweisen, wir sagen Kopieren von Zeichenketten. Das Nächste wichtige ist einander hängen von Zeichenketten. Wie kriege ich die beiden aneinander gehängt? Am besten noch mit dem Leerzeichen dazwischen. Wie kriege ich diese beiden Zeichenketten aneinander gehängt?
00:29
In anderen Sprachen dürfte man schreiben A plus B. Wenn Sie das in C machen, gibt es wieder etwas auf die Finger. So schlicht geht es nicht.
00:43
C hat dafür standardmäßig den Befehl String Concatenate. Irgendwie ist da nur Cut übrig geblieben. STR Cut ist nur noch übrig geblieben davon. String Concatenate. Zeichenketten aneinander hängen. Und jetzt muss man auch wieder fürchterlich vorsichtig sein.
01:03
Wenn ich das schreiben würde, wäre das auch wieder ein verborgener Fehler. Was er tut bei String Concatenate ist, er nimmt die Zeichenkette B und hängt sie hinter A hinter. Dafür muss in A aber genug Platz sein. Diese Zeichenkette hat so viel Platz wie da jetzt steht.
01:22
Nämlich die fünf Buchstaben plus die Null am Ende. Da kann ich nichts mehr hinter hängen. Das würde zwar nett kompiliert werden und ausgeführt werden, aber es würde Blödsinn tun und mir irgendeinen Unsinn in den Speicher schreiben. Ich muss dafür sorgen, dass diese erste Zeichenkette, in die wird die gesamte Zeichenkette dann reingeschrieben, dass diese erste Zeichenkette genug Luft hinten
01:43
hat. Wenn Sie das so schreiben, haben Sie keine Luft dahinter. Sehen Sie eine Chance, wie kann ich der ersten Zeichenkette noch Luft geben? Wenn Sie hier in den eckigen Klammern etwas angeben, das ist der Trick, dann sagen Sie ja, Ich möchte gerne 15 Charakters unterbringen und ich gebe hier nur die ersten fünf an und die Null dahinter natürlich noch.
02:07
Sie geben die ersten sechs an, streng genommen an dieser Stelle und der Rest wird mit Nullen gefüllt. Insgesamt 16 Bites. Es geht los mit H-A-L-L-O, die Null, um diesen String abzuschließen und dann der Rest mit Nullen füllen.
02:29
Dann habe ich auch genug Platz dafür, das müsste jetzt funktionieren. Also müsste ich jetzt Leerzeichen, Jörn, kopieren, hinter Hallo in das A rein. Ich bin gespannt.
02:50
Da steht das String längst noch drin. Okay, da stehen die beiden. Sie sehen,
03:00
da steht, wo fängt das an? Ist das hier? Ab 4 A denke ich. J-Ö-R-N und die Null am Ende von diesem String, den wir da unter B haben und dann kommt Hallo. Wo geht das los? 4-8, 6-1 und so weiter. 6-F, die Null am Ende von Hallo und dann aufgefüllt mit Nullen bis 15 sind.
03:24
Also wenn Sie, 16 sind. Wenn Sie hier die Größe angeben und initialisieren, wird eben der Rest automatisch mit Nullen aufgefüllt. Das sehen Sie hier in Aktion. Jetzt habe ich da genug Platz, um tatsächlich das auszuführen. Achten Sie einmal noch mal darauf, was hier steht. Hallo, Leerzeichen,
03:42
Jörn, Leerzeichen. Wie eben schon gesagt, Leerzeichen ist ein ganz normaler Buchstabe. Man sieht eben nur nichts, aber für den Rechen ist das ein ganz normaler Buchstabe. Und da steht das dann net hintereinander und Sie sehen, wie es hier zusammenkopiert worden ist. Also da, wo vorher die Null gestanden hat, wurde jetzt der Code für das Leerzeichen, 2-0 ist der Code
04:02
für das Leerzeichen reinkopiert und so weiter und so fort und die Null ans Ende. Also auch da wieder gefährlich. Vorsicht, man muss genug Platz haben in der ersten Zeichenkette, damit das funktioniert. Davon gibt es natürlich auch wieder eine sichere Funktion inzwischen. Wenn Sie
04:23
geben dann nachher an, einfach wie viele Zeichen maximal kopiert werden dürfen. Noch das Beispiel aus dem Skript. Wenn ich das da stehen habe, dass ich wirklich einmal in Aktion sehe, was für ein Unsinn dann passiert.
04:46
Das sieht ja so aus, ich möchte das Wetter hinter das Donner anhängen und das Ergebnis soll in A stehen. Da steht Donner, da steht Wetter.
05:02
Das ist jetzt besonders spannend, weil wir ganz am Ende vom Rahmen sind und eigentlich hier hinten nur noch drei Bites Platz haben. Ich weiß gar nicht genau, was er dann tun wird. Dass das jetzt schon haut, wundert mich gerade.
05:20
Aber Sie sehen, hier haben wir plötzlich ein Platzproblem. So viel Platz ist da nicht vorgesehen. Wenn ich dagegen hier genug Platz geschaffen hätte, dass auch das Ergebnis reinpasst,
05:42
sehen Sie, da haben wir es ja immer wirklich komplett im Speicher stehen und ein Null am Ende. Also Vorsicht, sobald Sie mit Zeichenketten, mit Nacken Zeichenketten in C experimentieren, immer darauf aufpassen, ob die Null am Ende ist, ob sie Platz für die Null haben und wenn sie kopieren oder einander hängen, ob dann auch genug Platz ist für die Zeichenkette, die man dann durch den Speicher schiebt.
06:09
So viel zu den üblichen Funktionen in String.h. Sie können sich die Datei angucken, da stehen noch ein paar andere, aber das sind jetzt so die wesentlichen Funktionen für Zeichenketten.