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:
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:
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.
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 (c) [Seleccionar]
#include <stdio.h>
int main()
{char *a[2];
char letra0[50];
char letra1[50];
char letra2[50];
a[0]=gets(letra0);
a[1]=gets(letra1);
a[2]=gets(letra2);
printf("a[0]=%s \n",a[0]);
printf("a[1]=%s \n",a[1]);
printf("a[2]=%s \n",a[2]);
}
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 (c) [Seleccionar]
#include <stdio.h>
int main()
{char *a[2];
char letra[50];
a[0]=gets(letra);
a[1]=gets(letra);
a[2]=gets(letra);
printf("a[0]=%s \n",a[0]);
printf("a[1]=%s \n",a[1]);
printf("a[2]=%s \n",a[2]);
}
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.