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. Jeg ville bedst tilføje en ekstra linje til min kode. Især fordi jeg nu bruger malloc, beder om hukommelse, det er min ansvar for at frigøre, at hukommelsen når jeg er færdig med det, ligesom vi skal frigøre hukommelse, der er givet til os af get streng. Så i slutningen af ​​dette program, er jeg kommer til at tilføje en ekstra linje at frigøre t før han vendte tilbage 0 for at indikere succes. 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.