>> DAVID J. MALAN: So stellt sich heraus, dass Kopieren einer Zeichenfolge ist nicht annähernd so
einfach wie das Kopieren einer primitiven, wie ein int oder float.
Denn unter der Haube ein String ist ein Zeichen-Sequenz.
So Kopieren einer Zeichenfolge, muss daher dass das Kopieren von ganzen Abfolge von
Zeichen.
>> Wenden wir unsere Aufmerksamkeit wieder auf, dass zuletzt Umsetzung und zerreißen diese
Linie, string s t gleich, was offensichtlich nicht ausreichend war.
Lassen Sie ersetzen es durch eine Linie, die aussieht, sondern wie diese.
String t bekommt malloc der String-Länge s + 1 mal die Größe eines Zeichens.
>> Jetzt gibt es ein bisschen gehen Zitat in diesem Codezeile.
Erstens, malloc, kurz für Speicher Zuordnung und
Funktion tut genau dies.
Da eine ganze Zahl, die zu Ihnen gibt sie Adresse eines Teil des Speichers der
dass viele Bytes.
Inzwischen hat die String-Länge von s plus 1 soll andeuten, dass wir möchten, wie
viele Bytes als s bereits einnimmt, einschließlich der Null-Terminator, den
Backslash 0 am Ende einer Zeichenkette.
>> Inzwischen glaube ich nicht unbedingt daran erinnern, wie groß ein Zeichen ist, auch
obwohl auf den meisten Systemen ist es einfach ein Byte, also werde ich Größe der Zeichen zu rufen
herauszufinden, dynamisch, wie groß ein individueller Charakter ist.
Sobald miteinander multipliziert, bekomme ich wieder die Gesamtzahl der Bytes, die ich brauche.
>> Aber was, wenn malloc nicht zu Rückkehr der Erinnerung, die wir brauchen?
Ich würde am besten überprüfen, dass wie folgt.
Wenn t gleich null ist, dann bin ich zum ersten Mal gehen freie s, der Speicher von get zurück
Schnur, und dann werde ich 1 zurück, um Fehler zu bedeuten.
>> Aber wenn alles gut geht, werde ich gehen um ein vier-Schleife durchlaufen und
wie folgt.
Für int i erhalten 0, n equals der String-Länge von s.
Ich werde das so lange, wie ich zu tun ist weniger als oder gleich n ist, so dass ich
laufen bis bis einschließlich der Nullabschlusszeichen in s.
>> Und bei jeder Iteration, ich bin werde ich erhöhen.
Inzwischen innerhalb dieser Schleife, kopieren s i-te Zeichen in t i-ten
Stelle genügt es, t tun Halterung i s bekommt Halterung i.
>> Lassen Sie uns jetzt noch retten, kompilieren und führen Sie dieses neue Programm.
Machen Kopie 1 Punkt Strich Kopie ein.
Und ich werde etwas sagen wie hallo in Kleinbuchstaben.
Und Gott sei Dank, diesmal meine Original bleibt unverändert.
hallo in Kleinbuchstaben.
Aber die Kopie ist in der Tat aktiviert.