elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / Array de cadenas por teclado en C en: 11 Junio 2014, 19:27 pm
Hola, soy un principiante de programación en C (no se nada de C++) y ya me hacía falta conseguir un foro para poder despejar dudas. Les ruego tengan paciencia.

La cuestión es que aprendí a hacer arrays de cadenas pero no logro que me las tome por teclado usando un solo array de caracteres, y de echo es bastante curioso el resultado que me da.

Pongo el caso en que la salida es la esperada, usando tres arrays para capturar las cadenas:
Código
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {char *a[2];
  5. char letra0[50];
  6. char letra1[50];
  7. char letra2[50];
  8.  
  9. a[0]=gets(letra0);
  10.  
  11. a[1]=gets(letra1);
  12.  
  13. a[2]=gets(letra2);
  14.  
  15. printf("a[0]=%s  \n",a[0]);
  16. printf("a[1]=%s  \n",a[1]);
  17. printf("a[2]=%s  \n",a[2]);
  18. }

Compilo, le ingreso como datos "cadena0", "cadena1", "cadena2", y como resultado obtengo:
a[0]=cadena0
a[1]=cadena1
a[2]=cadena2
Lo cual es perfectamente lo esperado.

Ahora en cambio uso solo el array "letra" para capturar el ingreso, de esta forma:
Código
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {char *a[2];
  5. char letra[50];
  6.  
  7. a[0]=gets(letra);
  8.  
  9. a[1]=gets(letra);
  10.  
  11. a[2]=gets(letra);
  12.  
  13. printf("a[0]=%s  \n",a[0]);
  14. printf("a[1]=%s  \n",a[1]);
  15. printf("a[2]=%s  \n",a[2]);
  16. }
Ahora compilo, le ingreso los mismo que en el caso anterior, pero el resultado es:
a[0]=cadena2
a[1]=cadena2
a[2]=cadena2
O sea, en todas las posiciones de a me asignó el último ingreso. Realmente me desconcierta. Si hubiese copiado el primer ingreso, tal vez sospecharía que el problema es con el gets (de echo lo probé con scanf y pasa lo mismo), pero ¿¿¿el último??? O sea, no entiendo como al pedir el último dato, haciendo a[2]=gets(letra) puede ser que a lo que toma desde el teclado lo asigne a los tres a sin llamar a la asignación.

Desde ya muchas gracias al que me ayude.
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines