Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: JaimeGc05 en 20 Enero 2019, 18:45 pm



Título: Problema con array de strings
Publicado por: JaimeGc05 en 20 Enero 2019, 18:45 pm
Como tendría que hacer para ingresar varios strings que recoge el programa con un bucle??
He probado con esto pero no me funciona:

Código
  1. int main() {
  2. char *array_palabras[10];
  3. char mas_palabras = 'S', palabra[15];
  4. int i = 0;
  5.  
  6. while ((i <= 10) && (mas_palabras == 'S')) {
  7. printf("Introducir palabra:\n");
  8. gets(palabra);
  9. array_palabras[i] = palabra;
  10. printf("Quieres mas (S/N)?\n");
  11. scanf("%c", &mas_palabras);
  12. i++;
  13. }
  14.  
  15. return 0;
  16. }

Gracias :)


Título: Re: Problema con array de strings
Publicado por: K-YreX en 20 Enero 2019, 18:50 pm
Pon el código entre etiquetas de código GeSHi. Dando a modificar el mensaje puedes elegirlas encima del cuadro de texto.


Título: Re: Problema con array de strings
Publicado por: K-YreX en 20 Enero 2019, 19:47 pm
Bueno a ver, hay varias cosillas para corregir:
- Lo que has creado es un array de punteros. Si lo haces de esa manera, te faltaría reservar memoria dinámica para cada palabra. Lo suyo si lo haces con memoria estática sería crear una matriz:
Código
  1. const int MAX_PALABRAS = 10;
  2. const int MAX_LONGITUD = 20;
  3. char conjunto_palabras[MAX_PALABRAS][MAX_LONGITUD];
  4. char palabra_actual[MAX_LONGITUD];

- Para recoger una palabra de la entrada estándar te recomiendo usar <fgets()> en lugar de <gets()> es una función más segura y recomendada:
Código
  1. // siguiendo el codigo anterior
  2. printf("Introduce palabra: ");
  3. fgets(palabra_actual, MAX_LONGITUD, stdin);

- Para guardar cada palabra en la matriz usa la función <strcpy()> o su variante <strncpy()>:
Código
  1. //siguiendo el ejemplo anterior
  2. strcpy(conjunto_palabras[i], palabra_actual);

- Para el filtro de entrada que has implementado con el <while()>, es el típico uso que se le da al <do while()>:
Código
  1. do{
  2.    // pedir palabra
  3.    // guardar palabra
  4.    // preguntar si pedir mas palabras
  5.    scanf("%c", &repetir);
  6.    getchar();
  7. }  while(i < MAX_PALABRAS && (repetir == 's' || repetir == 'S');

Espero que te sirva. Suerte :-X


Título: Re: Problema con array de strings
Publicado por: JaimeGc05 en 20 Enero 2019, 20:44 pm
Gracias   ;-)