Alocar dinamicamente memória para uma string
Há alguns dais comecei a estudar alocação dinâmica em C.
Quero armazenar numa variável uma string fornecida pelo usuário, mas não quero solicitar, a priori, o tamanho da string, a fim de realizar a alocação. A solução que imaginei foi alocar 10 bytes, depois alocar mais 10, se necessário, e assim por diante.
Tentei fazer assim:
#include <stdio.h>
#include <malloc.h>
#include <string.h>
int main()
{
char *str;
str = (char *) malloc(10 * sizeof(char));
printf("Digite a string: ");
while (fgets(str, 10, stdin) != NULL)
{
str = (char *) realloc(str, strlen(str) + 10 * sizeof(char));
}
printf("%s\n\n", str);
free(str);
return 0;}Mas o programa não se encerra. :unsure:
Os exemplos que encontro na Internet sempre solicitam ao usuário o tamanho da string, para fazer a alocação do tamanho certo. Não quero fazer assim.
Como pode ser uma solução?
[]s
Beraldo
Discussão (10)
Carregando comentários...