>> DAVID J. Malan: Pra, rezulton se kopjimi një varg nuk është gati si
thjeshtë si një kopjim primitive, si një int ose një noton.
Në fund të fundit, nën kapuç një varg është një karaktere rend.
Pra kopjimi një varg, për këtë arsye, duhet të përfshijë kopjimi se tërë rend të
karaktere.
>> Le të kthejmë vëmendjen tonë përsëri në atë Zbatimi fundit dhe shkul kjo
line, string t barabartë s, e cila në mënyrë të qartë nuk ishte e mjaftueshme.
Le të zëvendësojë atë me një linjë që duket, në vend të kësaj, si kjo.
String t merr malloc e gjatësisë së fijes s plus 1 herë madhësinë e një char.
>> Tani ka quote pak e shkuar më në këtë linjë të kodit.
Së pari, malloc, të shkurtër për memorie Alokimi, dhe
funksion e bën vetëm atë.
Duke pasur parasysh një numër i plotë, ajo kthehet tek ju në adresa e një copë e kujtesës së
se shumë bytes.
Ndërkohë, gjatësia varg s plus 1 ka për qëllim për të treguar se ne duam të
shumë bytes si s tashmë zë, duke përfshirë terminator saj null,
backslash 0 në fund të një varg.
>> Ndërkohë, unë nuk domosdoshmërisht mend sa i madh një char është, edhe
edhe pse në shumicën e sistemeve është thjesht 1 byte, kështu që unë do të thërrasë madhësinë e shkrumb të
kuptoj se sa e madhe dinamike një karakter individual është.
Pasi shumuar së bashku, unë të kthehem Numri i përgjithshëm i bytes që kam nevojë.
>> Por çfarë nëse malloc nuk arrin të kthimin e kujtesës kemi nevojë?
Unë do të kontrolloni më e mirë për këtë si më poshtë.
Nëse është e barabartë me t null, atëherë unë jam duke shkuar për herë të parë të lirë s, kujtesës kthyer nga get
string, dhe pastaj unë do të kthehen 1, për të ditur gabim.
>> Por nëse të gjithë është mirë, unë jam duke shkuar për të vazhduar për të përdorur një lak katër dhe iterate
si vijon.
Për int i merrni 0, n është e barabartë me gjatësia varg s.
Unë jam duke shkuar për të bërë këtë për sa kohë që i është me pak se ose e barabartë me n që I
iterate deri me dhe duke përfshirë null karakter ndërprerjen në s.
>> Dhe në çdo përsëritje, unë jam i shkuar në rritje i.
Ndërkohë, brenda këtij lak, kopje s së karakteri i-th në i-th T
vend, mjafton të bëjë t simboli i merr s kllapa i.
>> Le tani të shpëtuar, përpilojnë, dhe të drejtuar këtë program të ri.
Bëni kopje kopje 1 dot Slash 1.
Dhe unë do të them diçka si përshëndetje në të gjitha Fjala.
Dhe fatmirësisht, kjo kohë e mia origjinal mbetet i pandryshuar.
përshëndetje në të gjitha Fjala.
Por kopje është, me të vërtetë, i kapitalizuar.