Que tal Juanda,
lo que sucede es que para igualar cadenas no se usa "=", sino strcpy().
No se usa "=" porque lo que se hace ahí es igualar el puntero de inicio de cadena, por eso en
Cita: for(int f=0; fgets(cadena, n, lista) != NULL; f++)
{
palabras[f] = cadena;
}
lo que se hizo fue apuntar todas las palabras[f] al puntero de cadena, y cadena tenía escrito al final "silla", entonces por eso imprime todos como "silla".
Lo que hay que hacer ahí es:
Código:
for(int f=0; fgets(cadena, n, lista) != NULL; f++){
palabras[f] = new char[strlen(cadena)+1];
strcpy(palabras[f],cadena);
}
Ahí, a cada puntero de palabras se le han asignado varios caracteres según el tamaño de "cadena", y para copiarlo se usa strcpy().
Por otro lado, cuando estés imprimiendo la lista
Cita: for(int y=0; y<strlen(cadena);y++)
{
printf("%s++",palabras[y]);
}
el for no debe ir hasta "strlen(cadena)" porque ese es el tamaño de la última palabra, debe ir hasta "f", entonces la "f" hay que declararla fuera del for.
Saludos.