Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - Raymond Carver

#1
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:
#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:
#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.