1 00:00:00,000 --> 00:00:00,340 2 00:00:00,340 --> 00:00:01,960 >> COLUMNA 1: Imos agora corrixir este último programa. 3 00:00:01,960 --> 00:00:04,920 E esta vez, imos reservar explicitamente algunha memoria en que o 4 00:00:04,920 --> 00:00:06,550 entrada do usuario será almacenado. 5 00:00:06,550 --> 00:00:09,600 Para iso, imos mellorar en que o primeiro liña de código na que declarou s 6 00:00:09,600 --> 00:00:11,590 anteriormente para ser unha estrela de char. 7 00:00:11,590 --> 00:00:14,210 Esta vez, imos re-declarar lo do seguinte xeito - 8 00:00:14,210 --> 00:00:19,380 carácter s soporte de 16, por exemplo, preto soporte. 9 00:00:19,380 --> 00:00:23,690 >> Noutras palabras, imos declarar sa non máis ser un enderezo dun personaxe, 10 00:00:23,690 --> 00:00:26,610 senón un conxunto de 16 carácteres. 11 00:00:26,610 --> 00:00:30,295 Deste xeito, o usuario pode introducir ata 15 caracteres e aínda deixar espazo para 12 00:00:30,295 --> 00:00:31,570 un terminador nulo. 13 00:00:31,570 --> 00:00:35,870 Imos continuar a gardar, compilar e executar este programa. 14 00:00:35,870 --> 00:00:40,770 Facer barra scanf2 punto scanf2. 15 00:00:40,770 --> 00:00:45,100 Imos agora escribir unha cadea como Ola, e estamos agradeceu o Olá 16 00:00:45,100 --> 00:00:46,440 >> Agora, aínda hai un problema. 17 00:00:46,440 --> 00:00:50,140 Eu só escriba Ola, o que só é cinco personaxes, máis 1 ao nulo 18 00:00:50,140 --> 00:00:50,445 Terminator. 19 00:00:50,445 --> 00:00:53,610 Iso nos deixa con só unha necesidade de seis bytes. 20 00:00:53,610 --> 00:00:56,740 >> Pero, desgraciadamente, só alocados 16 en total. 21 00:00:56,740 --> 00:01:01,305 Polo tanto, se o usuario realmente tipo en 16 caracteres, ou 17, ou varios centos 22 00:01:01,305 --> 00:01:04,410 caracteres, aínda non vai ten espazo suficiente na memoria ao 23 00:01:04,410 --> 00:01:05,400 de entrada do usuario. 24 00:01:05,400 --> 00:01:07,750 E, de feito, iso é o que fai obter a entrada do usuario de forma 25 00:01:07,750 --> 00:01:08,940 dificultade en xeral. 26 00:01:08,940 --> 00:01:12,270 E, de feito, é por iso que nós Implementar a función cadea get no primeiro 27 00:01:12,270 --> 00:01:13,900 lugar na biblioteca CS50 - 28 00:01:13,900 --> 00:01:16,900 para descubrir como xestionar os situacións en que o usuario escribe 29 00:01:16,900 --> 00:01:19,710 máis caracteres que nós inicialmente previsto. 30 00:01:19,710 --> 00:01:21,750 >> Francamente, sen totalmente reescribir este programa, 31 00:01:21,750 --> 00:01:23,290 non hai solución limpa. 32 00:01:23,290 --> 00:01:26,970 Pola contra, o que temos que facer é obter un personaxe do usuario, un de cada 33 00:01:26,970 --> 00:01:28,860 tempo, unha e outra vez. 34 00:01:28,860 --> 00:01:32,510 E en cada momento, se entendemos que estamos sen memoria, teriamos que a 35 00:01:32,510 --> 00:01:36,450 Nese punto volver e realocar algo máis de memoria, por favor copie o usuario do 36 00:01:36,450 --> 00:01:39,400 entrada anterior do noso primeiro anaco de memoria para a nova, 37 00:01:39,400 --> 00:01:40,810 maior bloque de memoria. 38 00:01:40,810 --> 00:01:44,610 E, a continuación, repetir o proceso de novo e novo ata que o usuario está feito introducindo 39 00:01:44,610 --> 00:01:45,860 súa entrada. 40 00:01:45,860 --> 00:01:48,246