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. Ich würde am besten fügen Sie eine zusätzliche Linie, meinen Code. Insbesondere, weil ich bin jetzt mit malloc und bat um Speicher, es ist mein Verantwortung frei zu, dass der Speicher wenn ich mit ihm getan, wie wir gerade sollten Speicherfreigabe Das ist die uns von get-String gegeben. So ganz am Ende des Programms, ich bin gehen, um eine weitere Zeile hinzufügen frei t vor der Rückkehr 0 zum Erfolg geben. 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.