Hola
Tengo que hacer un ejercicio en el cual tengo que ingresar los valores de 3 cartas del juego de mesa "Truco", para eso me dan un struct predefinido y a partir de ahi tengo que hacer la carga. Luego con punteros, tengo que modificar todas las variables para que queden ordenadas.
La cuestion es que todavia no llegue a la parte de punteros y me quede solo en la parte de carga porque no me funciona.
Lo que hace la carga es obtener el numero de la carta, el valor y el palo.
Si encuentran algun error se los agradeceria.
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
int numero,valor;
char palo;
}
t_carta;
void CARGA(t_carta carta);
int main()
{
t_carta carta1,carta2,carta3;
CARGA(carta1);
printf ("\nEl numero es %d - El Valor es %d - El Palo es %c",(carta1.numero),(carta1.valor),(carta1.palo));
return 0;
}
void CARGA(t_carta carta)
{
printf ("Ingrese el numero de la carta: \n");
scanf("%d",&carta.numero);
printf ("\nIngrese el palo: E = ESPADA || O = ORO || C = COPA || B = BASTO \n");
carta.palo=getche();
printf("\nIngrese el valor de la carta: \n 1 de espada = 10\n1 de Basto = 9\n7 Espada = 8\n7 Oro = 7\n3 = 6\n2=5\n1=4\nFiguras=3\n7 Otro = 2\nLo Demas=1\n");
scanf("%d",&carta.valor);
}
El unico error que veo es el del scanf, que ... volvemos al Retorno de Linea que el scanf no procesa y lo termina agarrando el getche...
Cuanto ingresas un valor 10+Enter estas ingresando lo siguinte:
10\n\r
No recuerdo si es \n\r o \r\n el punto es que son 2 valores los que se manda cuando das un Enter
Entonces el Scanf procesa los números 10 y cuando detecta el primer caracter no numerico se detine y deja colgando un byte adicional en el buffer y este llega al getche y lo guarda en tu variable carta.palo
Entonces deberia de poner algo asi:
void CARGA(t_carta carta)
{
printf ("Ingrese el numero de la carta: \n");
scanf("%d",&carta.numero);
getche(); //o getchar(); lo que quieras, es solo para que leas el byte mas que esta en tu buffer de entrada
printf ("\nIngrese el palo: E = ESPADA || O = ORO || C = COPA || B = BASTO \n");
carta.palo=getche();
printf("\nIngrese el valor de la carta: \n 1 de espada = 10\n1 de Basto = 9\n7 Espada = 8\n7 Oro = 7\n3 = 6\n2=5\n1=4\nFiguras=3\n7 Otro = 2\nLo Demas=1\n");
scanf("%d",&carta.valor);
}
Saludos!