>> SPEAKER 1: Să repara acum ultima programului.
Și de această dată, să aloce în mod explicit unele de memorie în care
introduse de utilizator vor fi stocate.
Pentru a face acest lucru, haideți să piatra de tocila pe care primul linie de cod în cazul în care ne-am declarat s
înainte de a fi o stea char.
De data aceasta, să re-declare felul următor -
char s consolă 16, de exemplu, aproape suport.
>> Cu alte cuvinte, să declare de a nu mai fi o adresă a unui caracter,
ci mai degrabă o serie de 16 de caractere.
În acest fel, utilizatorul poate tip în până la 15 caractere și încă mai lasă loc pentru
un terminator nul.
Să ne continua pentru a salva, Compile, și Run acest program.
Face scanf2 punct slash scanf2.
Hai acum tastăm un șir ca salut, și ne-a mulțumit pentru salut.
>> Acum, există încă o problemă.
Am scris doar în salut, care este doar cinci caractere, plus 1 pentru nulul
terminator.
Ea ne lasă cu doar o nevoie de șase octeți.
>> Dar, din păcate, ne-am doar alocat 16 în total.
Deci, dacă de fapt utilizator tipuri în 16 caractere, sau 17, sau mai multe sute de
caractere, nu vom mai merge la au suficient spațiu în memorie pentru
intrare de utilizator.
Și, de fapt, aceasta este ceea ce face obtinerea de date introduse de utilizator, astfel
dificil, în general.
Și într-adevăr, acesta este motivul pentru care am implementat funcția șir obține în primul
loc în biblioteca CS50 -
să dau seama cum să se ocupe de cele situațiile în care utilizatorul a tipurilor de
mai multe caractere decât noi anticipat inițial.
>> Sincer, fără complet rescrierea acest program,
nu există nici o soluție curată.
Mai degrabă, ceea ce ne-ar trebui să faceți este să obțineți un caracter de la utilizator cel de la un
timp, din nou și din nou.
Și la fiecare punct în cazul în care ne dăm seama că suntem din memorie, ne-ar trebui să la
acel punct du-te înapoi și să realoce ceva mai multă memorie, copiați utilizator
intrare anterior din prima bucată de memorie în noi,
bucată mai mare de memorie.
Și apoi repetați acest proces din nou și din nou, până când utilizatorul se face furnizarea
intrare lui sau a ei.