1 00:00:00,000 --> 00:00:00,340 2 00:00:00,340 --> 00:00:01,960 >> GARSIAKALBIS 1: Leiskite dabar nustatyti kad praėjusiais programa. 3 00:00:01,960 --> 00:00:04,920 Ir šį kartą, galime aiškiai paskirstyti kai atmintis, kurioje 4 00:00:04,920 --> 00:00:06,550 vartotojo įvestis bus saugomi. 5 00:00:06,550 --> 00:00:09,600 Norėdami tai padaryti, tegul galąstuvas, kad pirmasis linijos kodas, kai mes paskelbėme s 6 00:00:09,600 --> 00:00:11,590 anksčiau, kad char žvaigždė. 7 00:00:11,590 --> 00:00:14,210 Šį kartą, tegul iš naujo deklaruoti tai taip - 8 00:00:14,210 --> 00:00:19,380 char ai laikiklis 16, pavyzdžiui, skliaustai uždaromi. 9 00:00:19,380 --> 00:00:23,690 >> Kitaip tariant, galime paskelbti s iki ne nebegali būti iš charakterio adresas, 10 00:00:23,690 --> 00:00:26,610 o iš 16 simbolių masyvas. 11 00:00:26,610 --> 00:00:30,295 Tokiu būdu, vartotojas gali įvesti iki 15 ženklai ir vis dar palieka erdvės 12 00:00:30,295 --> 00:00:31,570 null terminatorius. 13 00:00:31,570 --> 00:00:35,870 Leiskite pradėti taupyti, kaupti, ir paleisti šią programą. 14 00:00:35,870 --> 00:00:40,770 Padaryti scanf2 taškas velniop scanf2. 15 00:00:40,770 --> 00:00:45,100 Leiskite dabar įrašykite eilutę kaip labas, ir mes padėkojo už labas. 16 00:00:45,100 --> 00:00:46,440 >> Dabar, dar problema. 17 00:00:46,440 --> 00:00:50,140 Aš tik įvedėte hello, kuri yra tik penki simboliai, plius 1 už null 18 00:00:50,140 --> 00:00:50,445 terminatorius. 19 00:00:50,445 --> 00:00:53,610 Jis palieka mums tik šešių baitų poreikis. 20 00:00:53,610 --> 00:00:56,740 >> Bet, deja, mes tik skiriama 16 iš viso. 21 00:00:56,740 --> 00:01:01,305 Taigi, jei vartotojas iš tikrųjų rūšys 16 ženklai, arba 17, arba keli šimtai 22 00:01:01,305 --> 00:01:04,410 ženklai, mes vis dar nesiruošia turite pakankamai vietos atminties 23 00:01:04,410 --> 00:01:05,400 vartotojo įvesties. 24 00:01:05,400 --> 00:01:07,750 Ir iš tiesų, tai ką daro gauti vartotojo įvesties taip 25 00:01:07,750 --> 00:01:08,940 sunku apskritai. 26 00:01:08,940 --> 00:01:12,270 Ir iš tiesų, tai kodėl mes įdiegėme GET eilutė funkcija pirmas 27 00:01:12,270 --> 00:01:13,900 vieta CS50 bibliotekoje - 28 00:01:13,900 --> 00:01:16,900 išsiaiškinti, kaip elgtis tiems, situacijų, kai vartotojas įveda į 29 00:01:16,900 --> 00:01:19,710 daugiau simbolių, nei mes buvo manyta iš pradžių. 30 00:01:19,710 --> 00:01:21,750 >> Tiesą sakant, be galo perrašyti šią programą, 31 00:01:21,750 --> 00:01:23,290 nėra švarus tirpalas. 32 00:01:23,290 --> 00:01:26,970 Atvirkščiai, tai, ką mes turime padaryti, tai gauti nuo vartotojo koks simbolis 33 00:01:26,970 --> 00:01:28,860 laikas, vėl ir vėl. 34 00:01:28,860 --> 00:01:32,510 Ir kiekviename taške, jei mes suprantame, kad mes iš atminties, mes turėtume ne 35 00:01:32,510 --> 00:01:36,450 kad taškas grįžti ir perskirstyti šiek tiek daugiau atminties, kopijuoti vartotojo 36 00:01:36,450 --> 00:01:39,400 ankstesnė įvesties iš mūsų pirmą riekė atminties į naujas, 37 00:01:39,400 --> 00:01:40,810 didesnė riekė atmintyje. 38 00:01:40,810 --> 00:01:44,610 Ir tada pakartokite šį procesą vėl ir tol, kol vartotojas yra padaryta teikiant 39 00:01:44,610 --> 00:01:45,860 jo arba jos įėjimo. 40 00:01:45,860 --> 00:01:48,246