>> DAVID J. MALAN: Så det viser seg at kopierer en string er ikke på langt nær så
enkelt som å kopiere en primitiv, som en int eller en flåte.
Tross alt, under panseret en streng er en sekvens tegn.
Så kopierer en streng, derfor må bære å kopiere at hele sekvensen av
tegn.
>> La oss vende oppmerksomheten tilbake til det siste implementering og rive ut dette
linje, string t er lik s, som åpenbart ikke var tilstrekkelig.
La oss erstatte den med en linje som ser, i stedet, som dette.
String t får malloc av hyssinglengde på s pluss 1 ganger størrelsen av en røye.
>> Nå er det sitatet litt skjer på i denne linjen med kode.
Først malloc, kort for minne allokering, og
Funksjonen gjør nettopp det.
Gitt et heltall, returnerer den til deg adressen til en del av minnet
at mange bytes.
I mellomtiden, den strenglengde s pluss en er ment for å vise at vi vil ha som
mange bytes som er allerede okkuperer, inkludert sin avsluttende null, den
backslash 0 på slutten av en streng.
>> I mellomtiden, vet jeg ikke nødvendigvis huske hvor stor røye er, selv
men på de fleste systemer er det rett og slett en byte, så jeg skal ringe størrelse på røye til
finne ut dynamisk hvor stort en individuell karakter er.
Når multiplisert sammen, jeg får tilbake totalt antall byte som jeg trenger.
>> Men hva hvis malloc ikke klarer å returnere minne vi trenger?
Jeg ville sjekke best for det som følger.
Hvis t er lik null, så jeg først kommer til gratis s, minnet returneres av get
streng, og da kommer jeg til å tilbake 1, for å betegne feil.
>> Men hvis alt er bra, kommer jeg til å fortsette å benytte en fire-løkke og iterere
som følger.
For int jeg får 0, n er lik strengen lengden på s.
Jeg kommer til å gjøre dette så lenge jeg er mindre enn eller lik n, så at jeg
iterere opp gjennom og herunder null avslutnings karakter i s.
>> Og på hver iterasjon, er jeg kommer til å øke i.
I mellomtiden, på innsiden av denne sløyfen, kopiere s i-ende tegn til t i-th
plassering, er det nok å gjøre t brakett jeg får s brakett jeg.
>> La oss nå lagre, sammenstille, og kjøre dette nye programmet.
Gjør kopien en prikk slash kopi ett.
Og jeg vil si noe sånt hallo i små bokstaver.
Og heldigvis, denne gangen min opprinnelige forblir uendret.
hallo i små bokstaver.
Men kopien er, faktisk, kapitalisert.