1 00:00:00,000 --> 00:00:00,340 2 00:00:00,340 --> 00:00:01,960 >> ALTAVOZ 1: Ahora vamos a fijar ese último programa. 3 00:00:01,960 --> 00:00:04,920 Y esta vez, vamos a asignar de forma explícita parte de la memoria en la que el 4 00:00:04,920 --> 00:00:06,550 entrada del usuario se almacenará. 5 00:00:06,550 --> 00:00:09,600 Para ello, vamos a afinar en esa primera línea de código donde declaramos s 6 00:00:09,600 --> 00:00:11,590 previamente a ser una estrella de carbón. 7 00:00:11,590 --> 00:00:14,210 Esta vez, vamos a volver a declarar de la siguiente manera - 8 00:00:14,210 --> 00:00:19,380 s carbón soporte 16, por ejemplo, corchete de cierre. 9 00:00:19,380 --> 00:00:23,690 >> En otras palabras, vamos a declarar s para no ya ser una dirección de un personaje, 10 00:00:23,690 --> 00:00:26,610 sino más bien una serie de 16 caracteres. 11 00:00:26,610 --> 00:00:30,295 De esta manera, el usuario puede escribir en hasta 15 personajes y todavía dejar espacio para 12 00:00:30,295 --> 00:00:31,570 termina con un nulo. 13 00:00:31,570 --> 00:00:35,870 Vamos a proceder a Guardar, compilar, y ejecutar este programa. 14 00:00:35,870 --> 00:00:40,770 Hacer scanf2 slash dot scanf2. 15 00:00:40,770 --> 00:00:45,100 Ahora vamos a escribir una cadena como hola, y estamos agradecimos por el saludo. 16 00:00:45,100 --> 00:00:46,440 >> Ahora, hay todavía un problema. 17 00:00:46,440 --> 00:00:50,140 Yo sólo escribí hola, que sólo es cinco personajes, más 1 para la hipótesis nula 18 00:00:50,140 --> 00:00:50,445 terminador. 19 00:00:50,445 --> 00:00:53,610 Esto nos deja con sólo una necesidad de seis bytes. 20 00:00:53,610 --> 00:00:56,740 >> Pero, por desgracia, sólo se asignado 16 en total. 21 00:00:56,740 --> 00:01:01,305 Así que si en realidad el usuario escribe en 16 caracteres, o 17, o varios cientos 22 00:01:01,305 --> 00:01:04,410 caracteres, no estamos todavía va a tener suficiente espacio en la memoria para la 23 00:01:04,410 --> 00:01:05,400 de entrada del usuario. 24 00:01:05,400 --> 00:01:07,750 Y, de hecho, esto es lo que hace recibiendo la entrada del usuario de modo 25 00:01:07,750 --> 00:01:08,940 difícil en general. 26 00:01:08,940 --> 00:01:12,270 Y, de hecho, es por eso que implementamos la función de cadena get en la primera 27 00:01:12,270 --> 00:01:13,900 lugar en la biblioteca CS50 - 28 00:01:13,900 --> 00:01:16,900 para encontrar la manera de manejar los situaciones en las que el usuario escribe en 29 00:01:16,900 --> 00:01:19,710 más caracteres que nos previsto inicialmente. 30 00:01:19,710 --> 00:01:21,750 >> Francamente, sin por completo reescritura de este programa, 31 00:01:21,750 --> 00:01:23,290 no hay una solución clara. 32 00:01:23,290 --> 00:01:26,970 Más bien, lo que tendríamos que hacer es conseguir un personaje del usuario de uno en uno 33 00:01:26,970 --> 00:01:28,860 tiempo, una y otra vez. 34 00:01:28,860 --> 00:01:32,510 Y en cada punto, si nos damos cuenta de que estamos sin memoria, tendríamos que en 35 00:01:32,510 --> 00:01:36,450 ese punto ir de nuevo y reasignar un poco más de memoria, copie el usuario del 36 00:01:36,450 --> 00:01:39,400 de entrada anterior de nuestro primer trozo de memoria en la nueva, 37 00:01:39,400 --> 00:01:40,810 mayor parte de la memoria. 38 00:01:40,810 --> 00:01:44,610 Y luego repetir el proceso una y otra de nuevo hasta que el usuario se realiza proporcionando 39 00:01:44,610 --> 00:01:45,860 su entrada. 40 00:01:45,860 --> 00:01:48,246