jaja, si en realidad el codigo es totalmente incorrecto, toma en cuenta que solo lo he escrito aqui en el foro, con forme se me ocurre,
es solo la idea, me he pasado de bueno y lo corregi en funcionamiento.
te lo dejo con un pequeño ejemplo:
Código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* getstr();
int main()
{
char* nombre;
nombre = getstr();
printf("La cadena: %s, tienen una longitud de: %i\n", nombre, strlen(nombre));
free(nombre); //no olvides usar free(), para cada cadena que lees con getstr().
return 0;
}
char* getstr()
{
int index = 0;
char* cad = (char*)malloc(sizeof(char));
while(true)
{
cad[index] = getchar();
if(cad[index] == '\n'){cad[index] = '\0';return cad;}
index++;
cad = (char*)realloc(cad, sizeof(char)*(index +1));
}
}
espero que esto te facilite el manejo optimizado de cadenas.
Saludos.