Ver Mensaje Individual
  #2 (permalink)  
Antiguo 28/09/2009, 18:14
joticajulian
 
Fecha de Ingreso: septiembre-2009
Mensajes: 56
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Ayuda con arreglo.

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.