>> ZVUČNIK 1: Idemo sad popraviti da je prošle programa.
I ovaj put, neka je izrijekom izdvojiti dio memorije u kojoj
Korisnički ulaz će biti pohranjeni.
Da biste to učinili, neka je brusiti na taj prvi linija koda gdje smo deklarirana s.
prethodno biti char zvijezda.
Ovaj put, idemo ponovno Objavite je na sljedeći način -
char je nosač 16, na primjer, blizu nosač.
>> Drugim riječima, neka se proglasi e kojima nema više biti adresu lika,
nego niz od 16 znakova.
Na taj način, korisnik može upisati do 15 likovi i još uvijek ostavlja prostora za
null terminator.
Idemo nastaviti štedjeti, Sastaviti, i pokrenuti ovaj program.
Provjerite scanf2 dot kose crte scanf2.
Idemo sada upisati niz poput Pozdrav, i mi smo se zahvalio za pozdraviti.
>> Sad, tu je još uvijek problem.
Ja samo upisali u bok, što je samo Pet znakova, plus 1 za nultu
terminator.
To nam ostavlja samo Potreba za šest bajtova.
>> No, na žalost, samo mi dodijeljeno 16 ukupno.
Dakle, ako korisnik zapravo tipovi u 16. likovi, ili 17, ili nekoliko stotina
likovi, mi još uvijek ne ide ima dovoljno mjesta u memoriji za
Ulaz korisnika.
A u stvari, to je ono što čini dobivanje korisničkog unosa, tako
Teško je u cjelini.
I doista, to je razlog zašto smo provoditi get niz funkcija u prva
mjesto u CS50 knjižnici -
shvatiti kako se nositi s onima situacije u kojima korisnik upiše u
više znakova nego što smo prvotno predviđeno.
>> Iskreno, ne posve prepisivanjem ovaj program,
nema čisto rješenje.
Umjesto toga, ono što bismo morali učiniti je dobiti lik iz jednog korisnika na
vrijeme, opet i opet.
I u svakom trenutku, ako smo shvatili da smo iz sjećanja, morali bismo u
ta točka vratiti i preraspodijeliti neki više memorije, kopiranje korisnika
natrag ulaz od našeg prvog komad memorije u novo,
veći komad memorije.
I onda ponoviti postupak opet i opet dok korisnik radi pružanja
njegov ili njezin ulaz.