>> SPEAKER 1: Katsotaanpa nyt korjata että viime ohjelmassa.
Ja tällä kertaa, nyt nimenomaisesti myöntää Joissakin muistin, johon
käyttäjän syötteen tallennetaan.
Voit tehdä niin, katsotaanpa hioa, että ensin koodiriviä jossa julisti s
aiemmin olla char tähti.
Tällä kertaa, nyt uudelleen julistaa sen seuraavasti -
char s kiinnike 16, esimerkiksi loppusulkumerkki.
>> Toisin sanoen, nyt julistaa s mitään enää osoitteen luonne,
vaan pikemminkin joukko 16 merkkiä.
Näin käyttäjä voi kirjoittaa jopa 15 merkkiä ja silti jättää tilaa
null terminaattori.
Katsotaanpa siirtyä Tallenna, kääntää, ja Suorita ohjelma.
Tee scanf2 dot slash scanf2.
Katsotaanpa nyt kirjoitat merkkijonon kuten hello, ja olemme kiitti hei.
>> Nyt siellä on vielä ongelma.
Olen vain kirjoittanut hei, mikä on vain viisi merkkiä, plus 1 null
terminaattori.
Se jättää meille vain tarvitaan kuusi tavua.
>> Mutta valitettavasti me vain jaetaan 16 yhteensä.
Joten jos käyttäjä todella nimikkeet 16 merkkiä, tai 17, tai useita satoja
merkkiä, olemme yhä aio on tarpeeksi tilaa muistiin
käyttäjän syötteen.
Ja itse asiassa, tämä on mitä tekee saada käyttäjä syöttää niin
vaikea yleensä.
Ja todellakin, siksi otimme get merkkijono ensimmäisessä
paikka CS50 kirjastossa -
selvittää, miten käsitellä näitä tilanteissa, joissa käyttäjä on
enemmän merkkejä kuin me ennakoitua.
>> Suoraan sanottuna, ilman täysin uudelleenkirjoitus ohjelman
ei ole puhdas ratkaisua.
Pikemminkin, mitä pitäisi tehdä, on saada hahmo käyttäjä yksitellen
aikaa, uudestaan ​​ja uudestaan.
Ja jokaisessa vaiheessa, jos ymmärrämme, olemme muisti, olisimme at
Siinä vaiheessa palata takaisin ja kohdentaa lisää muistia, kopioida käyttäjän
edellinen panos ensimmäinen kimpale muistia uuteen,
suurempi murikka muistia.
Ja toista sitten, että prosessi uudestaan ​​ja uudelleen, kunnes käyttäjä on valmis tarjoamaan
hänen tulo.