>> DAVID J. MALAN: Så det viser sig, at kopiering af en streng er ikke nær så
simpelt som at kopiere en primitiv, som en int eller en float.
Efter alt, under hætten en streng er en sekvens tegn.
Så kopierer en streng har derfor til involvere kopiering, at hele sekvensen af
tegn.
>> Lad os vende vores opmærksomhed tilbage til det sidste implementering og flå dette
linje, string t er lig med r, som klart ikke var tilstrækkelig.
Lad os erstatte det med en linje, ser ud, i stedet for, som denne.
String t får malloc snor længde s plus 1 gange størrelsen af ​​en char.
>> Nu er der citerer lidt går på denne linje kode.
Først malloc, kort for hukommelse allokering og
Funktionen gør netop det.
Givet et heltal, det vender tilbage til dig adressen på en luns af hukommelse
at mange bytes.
I mellemtiden strengen længde s plus 1 er beregnet til at indikere, at vi ønsker så
mange bytes som s allerede indtager, herunder dens null terminator den
backslash 0 ved slutningen af ​​en streng.
>> I mellemtiden kan jeg ikke nødvendigvis huske hvor stor en char er, selv
selv på de fleste systemer er det simpelthen 1 byte, så jeg ringer størrelse char til
regne ud dynamisk, hvor stor individuel karakter er.
Når ganget sammen, får jeg tilbage samlede antal bytes, som jeg har brug for.
>> Men hvad nu hvis malloc undlader at returnere hukommelse, vi har brug for?
Jeg ville bedst kontrollere for, at så følger.
Hvis t er lig nul, så jeg først går til frie s, hukommelsen tilbage af get
streng, og så jeg har tænkt mig at tilbage 1, til at betyde fejl.
>> Men hvis alt er godt, vil jeg fortsætte at anvende en fire loop og gentage
som følger.
For int jeg får 0, n er lig strengen længde s.
Jeg har tænkt mig at gøre dette, så længe jeg er mindre end eller lig med n, så jeg
gentage op gennem og inklusive null afsluttende karakter i sek.
>> Og på hver iteration, er jeg vil forøge dvs.
I mellemtiden, på indersiden af ​​dette loop, kopiere S 'i'te tegn i t s i'te
placering, er det tilstrækkeligt at gøre t beslag i får s beslag dvs.
>> Lad os nu gemme, kompilere, og køre dette nye program.
Lav kopi 1 dot skråstreg eksemplar 1.
Og jeg vil sige noget lignende Hej i alle små bogstaver.
Og heldigvis, denne gang min original forbliver uændret.
Hej i alle små bogstaver.
Men kopien er faktisk kapitaliseret.