>> SPEAKER 1: Vediamo ora fissare tale ultimo programma.
E questa volta, facciamo in modo esplicito allocare alcune di memoria in cui la
ingresso dell'utente sarà memorizzato.
Per fare ciò, cerchiamo di perfezionare in quel primo riga di codice in cui abbiamo dichiarato s
in precedenza di essere una star char.
Questa volta, di far ri-dichiarare come segue -
char s staffa 16, per esempio, close staffa.
>> In altre parole, cerchiamo di dichiarare s per non più essere un indirizzo di un personaggio,
ma piuttosto un array di 16 caratteri.
In questo modo, l'utente può digitare fino a 15 personaggi e lasciano ancora spazio per
un terminatore null.
Ma procediamo per salvare, Compile, e Esegui questo programma.
Fai scanf2 dot barra scanf2.
Vediamo ora digitare una stringa come ciao, e stiamo ringraziato per il ciao.
>> Ora, c'è ancora un problema.
Ho scritto solo in ciao, che è solo cinque caratteri, più 1 per il nulla
terminatore.
E ci lascia con solo necessità di sei byte.
>> Ma, purtroppo, abbiamo solo assegnati 16 in totale.
Quindi, se l'utente effettivamente i tipi della 16 caratteri o 17, o diverse centinaia
personaggi, non siamo ancora in corso di avere abbastanza spazio in memoria per la
ingresso dell'utente.
E in effetti, questo è ciò che rende avere un input dell'utente in modo
difficile in generale.
E in effetti, questo è il motivo per cui abbiamo implementato la funzione di stringa get nel primo
posto in biblioteca CS50 -
per capire come gestire quelle situazioni in cui l'utente digita
più caratteri di noi inizialmente previsto.
>> Francamente, non completamente riscrittura di questo programma,
non c'è soluzione pulita.
Piuttosto, ciò che avremmo dovuto fare è ottenere un carattere dall'utente uno alla
tempo, ancora e ancora.
E a ogni punto, se ci rendiamo conto che siamo di memoria, avremmo dovuto al
quel punto tornare indietro e riallocare ancora un po 'di memoria, copiare l'utente del
Ingresso precedente dal nostro primo pezzo di memoria nella nuova,
grande pezzo di memoria.
E poi ripetere tale processo e nuovamente finché l'utente viene fatto fornendo
suo ingresso.