1 00:00:00,000 --> 00:00:00,410 2 00:00:00,410 --> 00:00:03,130 >> DAVID J. Malan: Do rezultas ke kopiado ŝnuro ne estas preskaŭ tiel 3 00:00:03,130 --> 00:00:05,750 simpla kopiado primitiva, kiel int aŭ kaleŝego. 4 00:00:05,750 --> 00:00:09,190 Post ĉio, sub la kapuĉo ŝnureto estas vico gravuloj. 5 00:00:09,190 --> 00:00:13,130 Do kopiado ĉenon, do, devas engaĝi kopiado ke tuta sinsekvo de 6 00:00:13,130 --> 00:00:14,240 karakteroj. 7 00:00:14,240 --> 00:00:17,470 >> Ni turnu nian atenton reen al tiu lasta efektivigo kaj disfendos tiun 8 00:00:17,470 --> 00:00:21,470 linio, ŝnuro t egalas s, kiu klare ne estis sufiĉaj. 9 00:00:21,470 --> 00:00:24,440 Ni anstataŭigi ĝin per linio, kiu aspektas, male, kiel ĉi tio. 10 00:00:24,440 --> 00:00:34,020 String t gets malloc de korda longeco de s plus 1 fojojn la grando de tipo char. 11 00:00:34,020 --> 00:00:36,320 >> Nun tie estas citaĵo iomete irante sur ĉi tiu linio de kodo. 12 00:00:36,320 --> 00:00:39,330 Unue, malloc, mallongigo de la memoro atribuo, kaj la 13 00:00:39,330 --> 00:00:40,700 funkcio faras ĝuste tion. 14 00:00:40,700 --> 00:00:44,740 Donita entjero, ĝi revenas al vi la adreso de eron de memoro de 15 00:00:44,740 --> 00:00:45,960 ke multajn bitojn. 16 00:00:45,960 --> 00:00:50,090 Dume, la kordo longo de s plus 1 estas intencita indiki ke ni volas kiel 17 00:00:50,090 --> 00:00:54,690 multaj bitokoj kiel s jam okupas, inkluzive ĝia nula finilo, la 18 00:00:54,690 --> 00:00:57,050 backslash 0 je la fino de ŝnuro. 19 00:00:57,050 --> 00:01:00,170 >> Dume, mi ne nepre memori kiom granda estas char estas, eĉ 20 00:01:00,170 --> 00:01:04,340 kvankam en plej multaj sistemoj ĝi estas simple 1 bajto, do mi nomas grandecon de char al 21 00:01:04,340 --> 00:01:08,210 elkompreni dinamike kiom granda individua karaktero estas. 22 00:01:08,210 --> 00:01:12,550 Iam multiplikitaj kune, mi reiros al la totala nombro de bitokoj, ke mi bezonas. 23 00:01:12,550 --> 00:01:14,680 >> Sed kion se malloc malsukcesas redoni la memoro ni bezonas? 24 00:01:14,680 --> 00:01:16,730 Mi deziras bonan kontroli por ke kiel sekvas. 25 00:01:16,730 --> 00:01:23,330 Se t egalas null, tiam mi unue iri por liberaj s, la memoro revenis por get 26 00:01:23,330 --> 00:01:27,120 kordo, kaj tiam mi iros al revenu 1, por signifi eraro. 27 00:01:27,120 --> 00:01:30,360 >> Sed se ĉiuj estas bone, mi tuj pluiri uzi kvar loop kaj persisti 28 00:01:30,360 --> 00:01:31,110 kiel sekvas. 29 00:01:31,110 --> 00:01:36,000 Por int i get 0, n egaluloj la arĉa longo de s. 30 00:01:36,000 --> 00:01:40,350 Mi tuj faros ĉi tiom longe kiom mi estas malpli ol aŭ egala al n tiel ke mi 31 00:01:40,350 --> 00:01:44,460 persisti supren tra inkluzivas la nula finanta karaktero en s. 32 00:01:44,460 --> 00:01:47,450 >> Kaj je ĉiu ripeto, mi estas tuj pliigo i. 33 00:01:47,450 --> 00:01:52,496 Dume, ene de ĉi maŝo, kopii s la i-a karaktero en T i-a 34 00:01:52,496 --> 00:01:59,310 situo, tio sufiĉas al fari t krampo i gets s krampo i. 41 00:01:59,320 --> 00:02:02,750 >> Ni nun savu, kompili, kaj kuri tiu nova programo. 42 00:02:02,750 --> 00:02:06,690 Faru kopion 1 dot oblikvo kopion 1. 43 00:02:06,690 --> 00:02:09,460 Kaj mi diras ion kiel saluton en ĉiuj minuskle. 44 00:02:09,460 --> 00:02:12,280 Kaj dankeme, ĉifoje mia originalo restas neŝanĝita. 45 00:02:12,280 --> 00:02:13,660 saluton en ĉiuj minuskle. 46 00:02:13,660 --> 00:02:15,540 Sed la kopio estas, ja, majuskle. 47 00:02:37,120 --> 00:02:38,963