Me alegro que te haya servido, pero esa no era mi idea! Ya que estás usando malloc de forma estática, siempre almacenará 100 bytes sin importar el temaño de la cadena leída. La idea de usar malloc() es almacenar la cantidad exacta de bytes para la cadena.
Edito: aquí hice un ejemplo de lo que yo pretendía:
Código C:
Ver original#include <stdio.h>
#include <stdlib.h>
int main()
{
int bytes = 0;
char current_char;
char *input = NULL;
printf("Ingrese una cadena: ");
while ((current_char
= getchar()) != '\n') {
bytes++;
input
= (char *)realloc(input
, bytes
); input[bytes - 1] = current_char;
}
printf("Has ingresado '%s'.\n", input
);
return 0;
}
Como verás solo se almacena la memoria necesaria para la cadena ingresada. Espero que te sirva!