1 00:00:00,000 --> 00:00:00,340 2 00:00:00,340 --> 00:00:01,960 >> ALTAVEU 1: Ara fixarem aquest últim programa. 3 00:00:01,960 --> 00:00:04,920 I aquesta vegada, anem a assignar de forma explícita part de la memòria en la qual el 4 00:00:04,920 --> 00:00:06,550 entrada de l'usuari s'emmagatzemarà. 5 00:00:06,550 --> 00:00:09,600 Per a això, anem a afinar en aquesta primera línia de codi on declarem s 6 00:00:09,600 --> 00:00:11,590 prèviament a ser un estel de carbó. 7 00:00:11,590 --> 00:00:14,210 Aquesta vegada, anem a tornar a declarar de la següent manera - 8 00:00:14,210 --> 00:00:19,380 s carbó suport 16, per exemple, claudàtor de tancament. 9 00:00:19,380 --> 00:00:23,690 >> En altres paraules, anem a declarar s per no ia ser una adreça de un personatge, 10 00:00:23,690 --> 00:00:26,610 sinó més aviat una sèrie de 16 caràcters. 11 00:00:26,610 --> 00:00:30,295 D'aquesta manera, l'usuari pot escriure en fins a 15 personatges i encara deixar espai per 12 00:00:30,295 --> 00:00:31,570 acaba amb un nul. 13 00:00:31,570 --> 00:00:35,870 Anem a procedir a Guardar, compilar, i executar aquest programa. 14 00:00:35,870 --> 00:00:40,770 Fer scanf2 slash dot scanf2. 15 00:00:40,770 --> 00:00:45,100 Ara anem a escriure una cadena com hola, i estem agrair per la salutació. 16 00:00:45,100 --> 00:00:46,440 >> Ara, hi ha encara un problema. 17 00:00:46,440 --> 00:00:50,140 Jo només vaig escriure hola, que només és cinc personatges, més 1 per a la hipòtesi nul · la 18 00:00:50,140 --> 00:00:50,445 terminador. 19 00:00:50,445 --> 00:00:53,610 Això ens deixa amb només una necessitat de sis bytes. 20 00:00:53,610 --> 00:00:56,740 >> Però, per desgràcia, només es assignat 16 en total. 21 00:00:56,740 --> 00:01:01,305 Així que si en realitat l'usuari escriu en 16 caràcters, o 17, o diversos centenars 22 00:01:01,305 --> 00:01:04,410 caràcters, no estem encara va a tenir prou espai a la memòria per a la 23 00:01:04,410 --> 00:01:05,400 d'entrada de l'usuari. 24 00:01:05,400 --> 00:01:07,750 I, de fet, això és el que fa rebent l'entrada de l'usuari de manera 25 00:01:07,750 --> 00:01:08,940 difícil en general. 26 00:01:08,940 --> 00:01:12,270 I, de fet, és per això que implementem la funció de cadena get a la primera 27 00:01:12,270 --> 00:01:13,900 lloc a la biblioteca CS50 - 28 00:01:13,900 --> 00:01:16,900 per trobar la manera de manejar els situacions en què l'usuari escriu en 29 00:01:16,900 --> 00:01:19,710 més caràcters que ens previst inicialment. 30 00:01:19,710 --> 00:01:21,750 >> Francament, sense per complet reescriptura d'aquest programa, 31 00:01:21,750 --> 00:01:23,290 no hi ha una solució clara. 32 00:01:23,290 --> 00:01:26,970 Més aviat, el que hauríem de fer és aconseguir un personatge de l'usuari d'un en un 33 00:01:26,970 --> 00:01:28,860 temps, una i altra vegada. 34 00:01:28,860 --> 00:01:32,510 I en cada punt, si ens adonem que estem sense memòria, hauríem de a 35 00:01:32,510 --> 00:01:36,450 aquest punt anar de nou i reassignar una mica més de memòria, copieu l'usuari del 36 00:01:36,450 --> 00:01:39,400 d'entrada anterior del nostre primer tros de memòria en la nova, 37 00:01:39,400 --> 00:01:40,810 major part de la memòria. 38 00:01:40,810 --> 00:01:44,610 I després repetir el procés una i altra de nou fins que l'usuari es realitza proporcionant 39 00:01:44,610 --> 00:01:45,860 la seva entrada. 40 00:01:45,860 --> 00:01:48,246