>> David J. MALAN: Deci, se dovedește că copierea unui șir nu este aproape la fel de
simplu ca copierea unui primitiv, ca un întreg sau un float.
La urma urmei, sub capota un șir este o secvență de caractere.
Deci, copierea un șir de caractere, prin urmare, trebuie să implica copierea că întreaga secvență a
caractere.
>> Să ne îndreptăm atenția înapoi la care ultima punere în aplicare și rupe această
linie, șir t este egal cu s, ceea ce în mod clar nu a fost suficientă.
Să-l înlocuiască cu o linie care arată, în schimb, ca aceasta.
Șir t devine malloc de lungime șir de S Plus 1 ori mai mare de un char.
>> Acum există citat un pic merge în această linie de cod.
În primul rând, malloc, pe termen scurt de memorie alocare, și
Funcția nu doar asta.
Având în vedere un întreg, se întoarce la tine adresa de o bucată de memorie de
că mulți bytes.
Între timp, lungimea șirului de s, plus o este menit să indice că vrem ca
de multe bytes ca s ocupă deja, inclusiv secvența sa terminală nul,
backslash 0 la sfârșitul unui șir.
>> Între timp, nu-mi amintesc în mod necesar cât de mare este un char, chiar
deși pe majoritatea sistemelor este pur și simplu o octet, așa că voi suna dimensiune de caracter la
dau seama dinamic cât de mare un caracter individual este.
După ce înmulțit împreună, mă întorc numărul total de bytes de care am nevoie.
>> Dar ce se întâmplă dacă malloc nu reveni memoria avem nevoie?
Mi-ar verifica cel mai bine pentru că, după cum urmează.
Dacă t este egal cu zero, atunci mă duc întâi pentru gratuit, memoria întors de get
șir, și apoi am de gând să întoarcă 1, pentru a semnifica eroare.
>> Dar dacă totul este bine, am de gând să procedeze de a utiliza un patru buclă și repeta
după cum urmează.
Pentru int i obține 0, n este egal cu lungimea șir de s.
Am de gând să facă acest lucru, atât timp cât i se mai mic sau egal cu n, astfel încât să
repeta în sus prin și inclusiv caracter de terminare nul în s..
>> Și pe fiecare iterație, eu sunt O să i incrementa.
Între timp, în interiorul de această buclă, copiați s lui i-lea caracter în t lui i-lea
locație, este suficient să se facă t suport i se s suport i.
>> Să acum salva, compila, și rula acest nou program.
Face copie 1 punct slash copie 1.
Și voi spune ceva de genul salut în toate litere mici.
Și din fericire, de data aceasta mea original rămâne neschimbată.
salut în toate litere mici.
Dar copia este, într-adevăr, capitalizate.