>> SPEAKER 1: Ni nun ripari ke lasta programo.
Kaj ĉi tiu tempo, ni eksplicite destini iuj memoro en kiu la
uzanto enigo estos stokitaj.
Por tion fari, ni torni super tiu unua linio de kodo, kie ni deklaris s
antaŭe esti char stelo.
Tiu tempo, ni re-auxdigu ĝin jene -
Char s krampo 16, ekzemple, proksime krampo.
>> Alivorte, ni deklaras s al neniu plu adreson de gravulo,
sed prefere tabelo de 16 signoj.
Tiamaniere, la uzanto povas entajpi ĝis 15 karakteroj kaj ankoraŭ lasas spacon por
nula finilo.
Ni procedi al Konservu, kompili, kaj Kuru ĉi programo.
Faru scanf2 dot oblikvo scanf2.
Ni nun tajpas ĉenon kiel saluton, kaj ni dankis por la saluton.
>> Nun, estas ankoraŭ problemo.
Mi nur tajpis en saluton, kiu estas nur kvin karakteroj, plus 1 por la nula
finilo.
Ĝi lasas nin kun nur bezono por ses bitokoj.
>> Sed bedaŭrinde, ni nur asignitaj 16 entute.
Do, se la uzanto reale tipoj en 16 karakteroj, aŭ 17, aŭ plurcent
karakteroj, ni ankoraŭ ne tuj havi sufiĉan spacon en memoro por la
uzanto enigon.
Kaj fakte, ĉi tiu estas kion faras atingi uzanto enigo tiom
malfacila en ĝenerala.
Kaj efektive, jen kial ni implementado la Get kordo funkcio en la unua
lokon en la CS50 biblioteko -
elkompreni kiel manipuli tiujn situacioj kie la uzanto tajpas en
pli signoj ol ni komence antaŭvidita.
>> Sincere, sen komplete reverkada tiun programon,
ne estas pura solvo.
Pli ĝuste, kion ni devus fari estas akiri karaktero de la uzanto unu ĉe
tempo, denove kaj denove.
Kaj je ĉiu punkto, se ni rimarkas ke ni estas el la memoro, ni devus, je
tiu punkto reiri en kaj reallocate iuj pli da memoro, kopii la uzanto
antaŭa enigo de niaj unuaj chunk de memoro en la nova,
grandan eron de memoro.
Kaj poste ripeti ke procezo denove kaj denove ĝis la uzanto estas farita havigante
lia aŭ ŝia enigo.