1 00:00:00,000 --> 00:00:00,340 2 00:00:00,340 --> 00:00:01,960 >> SPEAKER 1: Katsotaanpa nyt korjata että viime ohjelmassa. 3 00:00:01,960 --> 00:00:04,920 Ja tällä kertaa, nyt nimenomaisesti myöntää Joissakin muistin, johon 4 00:00:04,920 --> 00:00:06,550 käyttäjän syötteen tallennetaan. 5 00:00:06,550 --> 00:00:09,600 Voit tehdä niin, katsotaanpa hioa, että ensin koodiriviä jossa julisti s 6 00:00:09,600 --> 00:00:11,590 aiemmin olla char tähti. 7 00:00:11,590 --> 00:00:14,210 Tällä kertaa, nyt uudelleen julistaa sen seuraavasti - 8 00:00:14,210 --> 00:00:19,380 char s kiinnike 16, esimerkiksi loppusulkumerkki. 9 00:00:19,380 --> 00:00:23,690 >> Toisin sanoen, nyt julistaa s mitään enää osoitteen luonne, 10 00:00:23,690 --> 00:00:26,610 vaan pikemminkin joukko 16 merkkiä. 11 00:00:26,610 --> 00:00:30,295 Näin käyttäjä voi kirjoittaa jopa 15 merkkiä ja silti jättää tilaa 12 00:00:30,295 --> 00:00:31,570 null terminaattori. 13 00:00:31,570 --> 00:00:35,870 Katsotaanpa siirtyä Tallenna, kääntää, ja Suorita ohjelma. 14 00:00:35,870 --> 00:00:40,770 Tee scanf2 dot slash scanf2. 15 00:00:40,770 --> 00:00:45,100 Katsotaanpa nyt kirjoitat merkkijonon kuten hello, ja olemme kiitti hei. 16 00:00:45,100 --> 00:00:46,440 >> Nyt siellä on vielä ongelma. 17 00:00:46,440 --> 00:00:50,140 Olen vain kirjoittanut hei, mikä on vain viisi merkkiä, plus 1 null 18 00:00:50,140 --> 00:00:50,445 terminaattori. 19 00:00:50,445 --> 00:00:53,610 Se jättää meille vain tarvitaan kuusi tavua. 20 00:00:53,610 --> 00:00:56,740 >> Mutta valitettavasti me vain jaetaan 16 yhteensä. 21 00:00:56,740 --> 00:01:01,305 Joten jos käyttäjä todella nimikkeet 16 merkkiä, tai 17, tai useita satoja 22 00:01:01,305 --> 00:01:04,410 merkkiä, olemme yhä aio on tarpeeksi tilaa muistiin 23 00:01:04,410 --> 00:01:05,400 käyttäjän syötteen. 24 00:01:05,400 --> 00:01:07,750 Ja itse asiassa, tämä on mitä tekee saada käyttäjä syöttää niin 25 00:01:07,750 --> 00:01:08,940 vaikea yleensä. 26 00:01:08,940 --> 00:01:12,270 Ja todellakin, siksi otimme get merkkijono ensimmäisessä 27 00:01:12,270 --> 00:01:13,900 paikka CS50 kirjastossa - 28 00:01:13,900 --> 00:01:16,900 selvittää, miten käsitellä näitä tilanteissa, joissa käyttäjä on 29 00:01:16,900 --> 00:01:19,710 enemmän merkkejä kuin me ennakoitua. 30 00:01:19,710 --> 00:01:21,750 >> Suoraan sanottuna, ilman täysin uudelleenkirjoitus ohjelman 31 00:01:21,750 --> 00:01:23,290 ei ole puhdas ratkaisua. 32 00:01:23,290 --> 00:01:26,970 Pikemminkin, mitä pitäisi tehdä, on saada hahmo käyttäjä yksitellen 33 00:01:26,970 --> 00:01:28,860 aikaa, uudestaan ​​ja uudestaan. 34 00:01:28,860 --> 00:01:32,510 Ja jokaisessa vaiheessa, jos ymmärrämme, olemme muisti, olisimme at 35 00:01:32,510 --> 00:01:36,450 Siinä vaiheessa palata takaisin ja kohdentaa lisää muistia, kopioida käyttäjän 36 00:01:36,450 --> 00:01:39,400 edellinen panos ensimmäinen kimpale muistia uuteen, 37 00:01:39,400 --> 00:01:40,810 suurempi murikka muistia. 38 00:01:40,810 --> 00:01:44,610 Ja toista sitten, että prosessi uudestaan ​​ja uudelleen, kunnes käyttäjä on valmis tarjoamaan 39 00:01:44,610 --> 00:01:45,860 hänen tulo. 40 00:01:45,860 --> 00:01:48,246