>> ALTAVOZ 1: Ahora vamos a fijar ese último programa.
Y esta vez, vamos a asignar de forma explícita parte de la memoria en la que el
entrada del usuario se almacenará.
Para ello, vamos a afinar en esa primera línea de código donde declaramos s
previamente a ser una estrella de carbón.
Esta vez, vamos a volver a declarar de la siguiente manera -
s carbón soporte 16, por ejemplo, corchete de cierre.
>> En otras palabras, vamos a declarar s para no ya ser una dirección de un personaje,
sino más bien una serie de 16 caracteres.
De esta manera, el usuario puede escribir en hasta 15 personajes y todavía dejar espacio para
termina con un nulo.
Vamos a proceder a Guardar, compilar, y ejecutar este programa.
Hacer scanf2 slash dot scanf2.
Ahora vamos a escribir una cadena como hola, y estamos agradecimos por el saludo.
>> Ahora, hay todavía un problema.
Yo sólo escribí hola, que sólo es cinco personajes, más 1 para la hipótesis nula
terminador.
Esto nos deja con sólo una necesidad de seis bytes.
>> Pero, por desgracia, sólo se asignado 16 en total.
Así que si en realidad el usuario escribe en 16 caracteres, o 17, o varios cientos
caracteres, no estamos todavía va a tener suficiente espacio en la memoria para la
de entrada del usuario.
Y, de hecho, esto es lo que hace recibiendo la entrada del usuario de modo
difícil en general.
Y, de hecho, es por eso que implementamos la función de cadena get en la primera
lugar en la biblioteca CS50 -
para encontrar la manera de manejar los situaciones en las que el usuario escribe en
más caracteres que nos previsto inicialmente.
>> Francamente, sin por completo reescritura de este programa,
no hay una solución clara.
Más bien, lo que tendríamos que hacer es conseguir un personaje del usuario de uno en uno
tiempo, una y otra vez.
Y en cada punto, si nos damos cuenta de que estamos sin memoria, tendríamos que en
ese punto ir de nuevo y reasignar un poco más de memoria, copie el usuario del
de entrada anterior de nuestro primer trozo de memoria en la nueva,
mayor parte de la memoria.
Y luego repetir el proceso una y otra de nuevo hasta que el usuario se realiza proporcionando
su entrada.