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. Unë do të më mirë të shtoni një shtesë linjë të kodit tim. Në mënyrë të veçantë, sepse unë jam tani duke përdorur malloc, duke kërkuar për kujtesë, është e mia Përgjegjësia për të liruar atë memorie kur unë jam bërë me të, ashtu si ne Duhet të liruar kujtesës kjo është dhënë për ne nga string get. Pra, në fund të këtij programi, unë jam i duke shkuar për të shtuar një linjë shtesë për t lirë para se të kthehej 0 për të treguar sukses. 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.