>> DAVID J. MALAN: Så det visar sig att kopiera en sträng är inte alls lika
enkelt som att kopiera en primitiv, som en int eller float.
När allt under huven en sträng är en sekvens tecken.
Så kopierar en sträng, därför måste involverar kopiera hela den sekvens av
tecken.
>> Låt oss vända vår uppmärksamhet tillbaka till den förra genomförande och slita ut detta
linje, sträng t är lika med s, vilket klart inte var tillräcklig.
Låt oss byta ut den mot en linje som ser, i stället, som den här.
String t får malloc av stränglängd s plus 1 gånger storleken på en röding.
>> Nu finns det citat lite går på denna rad kod.
Först, malloc, kort för minne fördelning, och
Funktionen gör just det.
Givet ett heltal, återgår den till dig adressen för en bit av minnet av
att många bytes.
Samtidigt stränglängd s plus 1 är tänkt att visa att vi vill ha som
många bytes som ar redan upptar, inklusive dess null terminator, den
snedstreck 0 vid slutet av en sträng.
>> Samtidigt tror jag inte nödvändigtvis ihåg hur stor en röding är, till och med
även om de flesta system är det helt enkelt en byte, så jag ska ringa storlek röding till
räkna ut dynamiskt hur stor särprägel är.
När multipliceras ihop, jag får tillbaka den Totalt antal byte som jag behöver.
>> Men vad händer om malloc inte tillbaka minnet som vi behöver?
Jag skulle bäst kontrollera det på följande sätt.
Om t är lika med noll, då jag först gå till fria s, minnet återvände från get
sträng, och sedan ska jag tillbaka 1, för att beteckna fel.
>> Men om allt är bra, jag kommer att fortsätta att använda en fyra slinga och iterera
enligt följande.
För int jag får 0, n jämlikar stränglängd s.
Jag ska göra det så länge som jag är mindre än eller lika med n så att jag
iterera upp genom och med null avslutande tecken i talet.
>> Och på varje iteration, jag är kommer att öka i..
Samtidigt, inne i denna slinga, kopiera s s i: te tecknet i t s i: te
plats, räcker det att göra t Bracket I får s Bracket I.
>> Låt oss nu spara, kompilera, och kör detta nya program.
Gör kopia 1 dot snedstreck exemplar 1.
Och jag ska säga något som hej i gemener.
Och tack och lov, denna gång min originalet är oförändrad.
hej i gemener.
Men kopian är faktiskt aktiveras.