David J. Malan: Tako ispada da je kopiranje niz nije gotovo kao jednostavan kao kopiranje primitivni, poput int ili float. Uostalom, ispod haube string je niz znakova. Dakle kopiranje niz, dakle, mora uključuje kopiranje taj cijeli niz likovi. Okrenimo našu pozornost na to Posljednji provedba i potegnuti to linija, string t jednaka S, koji očito nije bilo dovoljno. Idemo ga zamijeniti s linije koja izgleda, umjesto da, kao što je ovaj. String t dobiva malloc duljine niza S plus 1 puta veličine znakom. Sada postoji citat malo ide na u ovom linija koda. Prvo, malloc, kratko za memoriju raspodjela te funkcija ne samo to. S obzirom na broj, vraća se na vas adresa komad spomen da mnogi bajtova. U međuvremenu, duljine od s. plus 1 je značilo da ukazuju na to da želimo što mnogi bajtova što je već zauzima, uključujući njegovu null terminator, backslash 0 na kraju niza. U međuvremenu, mi nužno ne sjećam koliko je velika char je, čak i iako je na većini sustava je jednostavno 1 Bajt, pa ću nazvati veličinu crnila na shvatiti dinamički koliko je velika Pojedinac je lik. Nakon množi zajedno, ja se vratim Ukupan broj bajtova koji mi treba. No, što ako malloc ne vratiti sjećanje mi je potrebno? Ja bih najbolje provjeriti na sljedeći način. Ako je t jednako nula, tada sam prvi put idem slobodnih s, memorija vraća get string, a zatim ću povratak 1, da označi pogrešku. Ali, ako je sve u redu, ja ću nastaviti koristiti četiri petlju i ponoviti kako slijedi. Za int ja dobiti 0, n = duljine od s.. Ja ću to učiniti dok sam se manji od ili jednak N, tako da sam ponoviti kroz te uključujući null završni lik u sekundi. I na svakoj iteraciji, ja sam ide ja prirast. U međuvremenu, unutar ove petlje, kopirati s je i-ti lik u T I-og mjesto, dovoljno je napraviti t Nosač i dobiva e nosač sam. I najbolje bi dodati još jedan dodatni linija za moj broj. Posebno, jer sam sada koristim malloc, molba za pamćenje, to je moj Odgovornost za osloboditi tog sjećanja kad sam gotov s njim, baš mi se sviđa Treba osloboditi memoriju koja je koju nam je get nizu. Tako je na samom kraju ovog programa, ja sam će dodati jednu dodatnu liniju osloboditi t prije povratka 0 ukazati uspjeh. Idemo sada spasiti, sastaviti i pokrenuti ovaj novi program. Napravite kopija 1 točka kose crte primjerak jedne. I ja ću reći nešto poput: Pozdrav u svim malim slovima. I srećom, ovaj put my Izvorni ostaje nepromijenjena. Pozdrav u svim malim slovima. No, primjerak je, doista, kapitaliziraju.