>> DAVID J. Malan: Nii selgub, et kopeerimine string ei ole kaugeltki nii
lihtne kopeerida primitiivne, nagu int või veepinnal.
Lõppude all kapuuts string on järjestus tähemärki.
Nii kopeerimine string, seega peab kaasata kopeerimise et kogu jada
tähemärki.
>> Keerame meie tähelepanu tagasi, et viimane rakendamise ja rippida läbi selle
line, string t võrdub s, mis selgelt ei piisa.
Olgem asendada see joon, mis tundub hoopis niimoodi.
String t saab malloc stringi pikkus s pluss 1 korda suurem char.
>> Nüüd on tsitaat natuke läheb on selles rida koodi.
Esiteks malloc, lühike mälu eraldamine ning
funktsioon teeb just seda.
Arvestades täisarv, tagastab teile aadress tüki mälu
et paljud bytes.
Vahepeal string pikkusega s pluss 1 on mõeldud näitama, et me soovime nagu
palju baite kui te juba kasutab, sealhulgas null terminaator
kurakriips 0 lõpus stringi.
>> Vahepeal ma ei pruugi mäletan kui suur char on isegi
kuigi enamikus süsteemides see on lihtsalt 1 bait, nii et ma helistan suurus char
nuputada dünaamiliselt kui suur eripärasuse on.
Kui koondatakse, ma tagasi baitide koguarvu, mida ma vajan.
>> Aga kui malloc ei tagasi mälu vajame?
Ma parim kontrollida, et järgmine.
Kui t võrdub null, siis ma kõigepealt lähed tasuta s, mälu tagastatud get
string, ja siis ma lähen tagasi 1, tähistamaks viga.
>> Aga kui kõik on hästi, ma lähen edasi minna kasutada nelja silmuse ja kinnitada,
järgmiselt.
Sest int i saada 0, n on string pikkusega s.
Ma teen seda nii kaua, kui ma ei väiksem või võrdne n nii, et ma
kinnitada, kuni läbi ja sealhulgas null lõpetavale tegelane s.
>> Ja iga iteratsiooni, ma olen läheb juurdekasvu i.
Vahepeal sees see silmus, kopeerida s i-nda iseloomu arvesse t i-nda
asukohta, piisab teha t sulg i saab s sulg i.
>> Olgem nüüd salvestada, koostada ja käivitada uus programm.
Tee koopia 1 dot kaldkriipsuga koopia 1.
Ja ma ütlen midagi tere kõik väiketähed.
Ja õnneks, seekord minu originaal jääb samaks.
tere kõik väiketähed.
Aga koopia on tõepoolest kapitaliseeritud.