>> COLUNA 1: Vamos agora corrigir esse último programa.
E desta vez, vamos alocar explicitamente alguma memória em que o
entrada do usuário será armazenado.
Para isso, vamos aprimorar em que o primeiro linha de código em que declarou s
anteriormente para ser uma estrela de char.
Desta vez, vamos re-declarar lo da seguinte forma -
caractere s suporte de 16, por exemplo, próximo suporte.
>> Em outras palavras, vamos declarar s para não mais ser um endereço de um personagem,
mas sim um conjunto de 16 caracteres.
Desta forma, o usuário pode digitar até 15 caracteres e ainda deixar espaço para
um terminador nulo.
Vamos prosseguir para salvar, compilar e executar este programa.
Fazer barra scanf2 ponto scanf2.
Vamos agora escrever uma string como Olá, e estamos agradeceu o Olá.
>> Agora, ainda há um problema.
Eu só digitei Olá, o que só é cinco personagens, mais 1 para o nulo
terminator.
Isso nos deixa com apenas uma necessidade de seis bytes.
>> Mas, infelizmente, nós só alocados 16 no total.
Portanto, se o usuário realmente tipos em 16 caracteres, ou 17, ou várias centenas
caracteres, ainda não vai tem espaço suficiente na memória para o
de entrada do usuário.
E, de fato, isso é o que faz obter a entrada do usuário de modo
dificuldade em geral.
E, de fato, é por isso que nós implementamos a função string get no primeiro
lugar na biblioteca CS50 -
para descobrir como lidar com os situações em que o usuário digita
mais caracteres do que nós inicialmente previsto.
>> Francamente, sem completamente reescrever este programa,
não há solução limpa.
Em vez disso, o que nós temos que fazer é obter um personagem do usuário, um de cada
tempo, uma e outra vez.
E a cada momento, se percebemos que estamos sem memória, teríamos que a
Nesse ponto voltar e realocar um pouco mais de memória, copie o usuário do
entrada anterior do nosso primeiro pedaço de memória para o novo,
maior bloco de memória.
E, em seguida, repetir o processo novamente e novamente até que o usuário é feito fornecendo
sua entrada.