1 00:00:00,000 --> 00:00:00,340 2 00:00:00,340 --> 00:00:01,960 >> SPEAKER 1: Vediamo ora fissare tale ultimo programma. 3 00:00:01,960 --> 00:00:04,920 E questa volta, facciamo in modo esplicito allocare alcune di memoria in cui la 4 00:00:04,920 --> 00:00:06,550 ingresso dell'utente sarà memorizzato. 5 00:00:06,550 --> 00:00:09,600 Per fare ciò, cerchiamo di perfezionare in quel primo riga di codice in cui abbiamo dichiarato s 6 00:00:09,600 --> 00:00:11,590 in precedenza di essere una star char. 7 00:00:11,590 --> 00:00:14,210 Questa volta, di far ri-dichiarare come segue - 8 00:00:14,210 --> 00:00:19,380 char s staffa 16, per esempio, close staffa. 9 00:00:19,380 --> 00:00:23,690 >> In altre parole, cerchiamo di dichiarare s per non più essere un indirizzo di un personaggio, 10 00:00:23,690 --> 00:00:26,610 ma piuttosto un array di 16 caratteri. 11 00:00:26,610 --> 00:00:30,295 In questo modo, l'utente può digitare fino a 15 personaggi e lasciano ancora spazio per 12 00:00:30,295 --> 00:00:31,570 un terminatore null. 13 00:00:31,570 --> 00:00:35,870 Ma procediamo per salvare, Compile, e Esegui questo programma. 14 00:00:35,870 --> 00:00:40,770 Fai scanf2 dot barra scanf2. 15 00:00:40,770 --> 00:00:45,100 Vediamo ora digitare una stringa come ciao, e stiamo ringraziato per il ciao. 16 00:00:45,100 --> 00:00:46,440 >> Ora, c'è ancora un problema. 17 00:00:46,440 --> 00:00:50,140 Ho scritto solo in ciao, che è solo cinque caratteri, più 1 per il nulla 18 00:00:50,140 --> 00:00:50,445 terminatore. 19 00:00:50,445 --> 00:00:53,610 E ci lascia con solo necessità di sei byte. 20 00:00:53,610 --> 00:00:56,740 >> Ma, purtroppo, abbiamo solo assegnati 16 in totale. 21 00:00:56,740 --> 00:01:01,305 Quindi, se l'utente effettivamente i tipi della 16 caratteri o 17, o diverse centinaia 22 00:01:01,305 --> 00:01:04,410 personaggi, non siamo ancora in corso di avere abbastanza spazio in memoria per la 23 00:01:04,410 --> 00:01:05,400 ingresso dell'utente. 24 00:01:05,400 --> 00:01:07,750 E in effetti, questo è ciò che rende avere un input dell'utente in modo 25 00:01:07,750 --> 00:01:08,940 difficile in generale. 26 00:01:08,940 --> 00:01:12,270 E in effetti, questo è il motivo per cui abbiamo implementato la funzione di stringa get nel primo 27 00:01:12,270 --> 00:01:13,900 posto in biblioteca CS50 - 28 00:01:13,900 --> 00:01:16,900 per capire come gestire quelle situazioni in cui l'utente digita 29 00:01:16,900 --> 00:01:19,710 più caratteri di noi inizialmente previsto. 30 00:01:19,710 --> 00:01:21,750 >> Francamente, non completamente riscrittura di questo programma, 31 00:01:21,750 --> 00:01:23,290 non c'è soluzione pulita. 32 00:01:23,290 --> 00:01:26,970 Piuttosto, ciò che avremmo dovuto fare è ottenere un carattere dall'utente uno alla 33 00:01:26,970 --> 00:01:28,860 tempo, ancora e ancora. 34 00:01:28,860 --> 00:01:32,510 E a ogni punto, se ci rendiamo conto che siamo di memoria, avremmo dovuto al 35 00:01:32,510 --> 00:01:36,450 quel punto tornare indietro e riallocare ancora un po 'di memoria, copiare l'utente del 36 00:01:36,450 --> 00:01:39,400 Ingresso precedente dal nostro primo pezzo di memoria nella nuova, 37 00:01:39,400 --> 00:01:40,810 grande pezzo di memoria. 38 00:01:40,810 --> 00:01:44,610 E poi ripetere tale processo e nuovamente finché l'utente viene fatto fornendo 39 00:01:44,610 --> 00:01:45,860 suo ingresso. 40 00:01:45,860 --> 00:01:48,246