1 00:00:00,000 --> 00:00:00,410 2 00:00:00,410 --> 00:00:03,130 >> David J. MALAN: Így kiderül, hogy a másolás karakterlánc közel sem olyan 3 00:00:03,130 --> 00:00:05,750 egyszerű másolás a primitív, mint egy int vagy float. 4 00:00:05,750 --> 00:00:09,190 Végül is, a motorháztető alatt egy sor egy sorozat karakter. 5 00:00:09,190 --> 00:00:13,130 Tehát másolása egy string, ezért meg kell magában másolás az egész sorozata 6 00:00:13,130 --> 00:00:14,240 karaktereket. 7 00:00:14,240 --> 00:00:17,470 >> Nézzük viszont a figyelmet vissza a utolsó végrehajtási és dobja ki ezt a 8 00:00:17,470 --> 00:00:21,470 vonal, string t egyenlő s, ami nyilvánvalóan nem volt elegendő. 9 00:00:21,470 --> 00:00:24,440 Nézzük cserélje ki a sort, amely úgy néz ki, hanem, mint ez. 10 00:00:24,440 --> 00:00:34,020 Karakterlánc t kap malloc string hossza s plusz 1-szer akkora, mint egy char. 11 00:00:34,020 --> 00:00:36,320 >> Most van idézet egy kicsit lesz az ebben a sorban a kódot. 12 00:00:36,320 --> 00:00:39,330 Először is, malloc, rövid memória elosztását, valamint a 13 00:00:39,330 --> 00:00:40,700 funkció pontosan ezt teszi. 14 00:00:40,700 --> 00:00:44,740 Mivel egy egész számot, visszatér, hogy ha a címét egy darab memória 15 00:00:44,740 --> 00:00:45,960 hogy hány bájt. 16 00:00:45,960 --> 00:00:50,090 Eközben a húr hossza s plusz 1 célja, hogy azt jelzi, hogy szeretnénk, mint 17 00:00:50,090 --> 00:00:54,690 hány bájt, mint s már foglal, beleértve a null terminátor, a 18 00:00:54,690 --> 00:00:57,050 backslash 0 a végén a húr. 19 00:00:57,050 --> 00:01:00,170 >> Közben én nem feltétlenül emlékszik milyen nagy karakter van még 20 00:01:00,170 --> 00:01:04,340 bár a legtöbb rendszeren ez csak 1 byte, ezért hívom mérete char a 21 00:01:04,340 --> 00:01:08,210 kitalálni, dinamikusan, milyen nagy egyéni jellege van. 22 00:01:08,210 --> 00:01:12,550 Egyszer szorozva együtt kapok vissza bájtok számát, amire szükségem van. 23 00:01:12,550 --> 00:01:14,680 >> De mi van, ha malloc nem vissza a memória van szükségünk? 24 00:01:14,680 --> 00:01:16,730 Én a legjobb ellenőrizze, hogy az alábbiak szerint. 25 00:01:16,730 --> 00:01:23,330 Ha t értéke null, akkor én először megyek a szabad s, a memória által visszaadott get 26 00:01:23,330 --> 00:01:27,120 húr, aztán megyek vissza 1, jelezve a hibát. 27 00:01:27,120 --> 00:01:30,360 >> De ha minden rendben van, megyek, hogy folytassa egy négy hurkot, majd annak variációi 28 00:01:30,360 --> 00:01:31,110 a következők szerint. 29 00:01:31,110 --> 00:01:36,000 Az int kapok 0, n értéke a húr hossza s. 30 00:01:36,000 --> 00:01:40,350 Fogom csinálni, amíg én is kevesebb vagy egyenlő, mint az n, így én 31 00:01:40,350 --> 00:01:44,460 ismételget egészen beleértve a null lezáró karakter s. 32 00:01:44,460 --> 00:01:47,450 >> És minden egyes iterációban vagyok fog növekmény i. 33 00:01:47,450 --> 00:01:52,496 Közben belül erre a ciklusra, másolás s i-edik karaktert t i-edik 34 00:01:52,496 --> 00:01:59,310 helyet, elegendő, hogy nem t konzol i kap s konzol i. 41 00:01:59,320 --> 00:02:02,750 >> Nézzük most menteni, fordítási és futtatni az új program. 42 00:02:02,750 --> 00:02:06,690 Legyen másolatot 1 pont slash példány 1. 43 00:02:06,690 --> 00:02:09,460 És mondok valamit, mint helló minden kisbetűvel. 44 00:02:09,460 --> 00:02:12,280 És szerencsére, ez alkalommal a eredeti változatlan marad. 45 00:02:12,280 --> 00:02:13,660 helló minden kisbetűvel. 46 00:02:13,660 --> 00:02:15,540 De a másolat, sőt, aktivált. 47 00:02:37,120 --> 00:02:38,963