Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: psycho248 en 19 Enero 2014, 02:45 am



Título: Problema para guardar cadenas
Publicado por: psycho248 en 19 Enero 2014, 02:45 am
Hola esta es mi segunda consulta. Después de buscar y rebuscar en mi código no le hallo solución.
Al guardar el segundo nombre automáticamente se almacena en lista[cant] sin necesidad de completar el bucle.   :-[ :-[   :-[   Ayuda por favor.......

Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. #include<stdbool.h>
  5. int main()
  6. {
  7. int i,cant,j,cont;
  8. char *lista[10];
  9. char *aux[10];
  10. char* nombre;
  11. bool se_repite;
  12.  
  13. printf("Ingrese los nombres\n");
  14. nombre=(char*)malloc(10);
  15. cant=0;
  16. gets(nombre);
  17.  
  18.  cont=1;
  19.  while(cont<=2)
  20.  {
  21.     cant++;
  22.     lista[cant]=nombre;
  23.       do
  24.       {
  25.         gets(nombre);  //Aqui     al guardar el segundo nombre se encima con lista[cant]
  26.         se_repite=false;
  27.          for (i=1; i<=cant; i++)
  28.          {
  29.           if(strcmp(lista[cant],nombre)==0)
  30.           {
  31.             se_repite=true;
  32.           }
  33.          }
  34.       }while(se_repite=false);
  35. cont++;   }
  36. }
  37.  


Título: Re: Problema para guardar cadenas
Publicado por: psycho248 en 19 Enero 2014, 04:22 am
Ok Ahora me respondo yo mismo  :silbar: me faltó poner

Código
  1. nombre=(char*)malloc(10);  //Antes del segundo gets();
  2. gets(nombre);


 :rolleyes: :rolleyes: Pero pues por aquí lo dejo. Espero que a alguien le sirva.  :P


Título: Re: Problema para guardar cadenas
Publicado por: amchacon en 19 Enero 2014, 13:14 pm
La mayoría de los errores "extraños" que tengas van a ser por depistes, te lo digo yo ;-)

Por cierto en vez de gets se recomienda fgets, la razón es porque puedes limitar el número de caracteres leídos:
Código
  1. fgets(nombre,10,stdin); // Leer HASTA 10 caracteres del teclado
http://www.cplusplus.com/reference/cstdio/fgets/

Si no lo limitas, leerías todo y si son más de los 10 caracteres la puedes liar. En el mejor de los casos el SO te abortará el progama, en el peor de los casos sobreescribirás otras variables, con lo que te encontrarás "problemas extraños".


Título: Re: Problema para guardar cadenas
Publicado por: psycho248 en 19 Enero 2014, 15:53 pm
Siiii el despiste  ;D voy a checar tu opción, sera una nueva forma para programar y hacer muchas cosas.  >:D