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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ejercicio de Structs, me da basura no se porque
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ejercicio de Structs, me da basura no se porque  (Leído 1,772 veces)
palacio29

Desconectado Desconectado

Mensajes: 103


Ver Perfil
Ejercicio de Structs, me da basura no se porque
« en: 14 Septiembre 2016, 16:35 pm »

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.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct
  5. {
  6. int numero,valor;
  7. char palo;
  8. }
  9. t_carta;
  10.  
  11.  
  12. void CARGA(t_carta carta);
  13.  
  14. int main()
  15. {
  16.    t_carta carta1,carta2,carta3;
  17.    CARGA(carta1);
  18.    printf ("\nEl numero es %d  -  El Valor es %d  -  El Palo es %c",(carta1.numero),(carta1.valor),(carta1.palo));
  19.  
  20.  
  21.    return 0;
  22. }
  23. void CARGA(t_carta carta)
  24. {
  25.    printf ("Ingrese el numero de la carta: \n");
  26.    scanf("%d",&carta.numero);
  27.    printf ("\nIngrese el palo:  E = ESPADA  || O = ORO || C = COPA || B = BASTO \n");
  28.    carta.palo=getche();
  29.    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");
  30.    scanf("%d",&carta.valor);
  31. }
  32.  
  33.  
  34.  
  35.  


En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.697


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Ejercicio de Structs, me da basura no se porque
« Respuesta #1 en: 14 Septiembre 2016, 17:12 pm »

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:

Código:
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:

Código
  1. void CARGA(t_carta carta)
  2. {
  3.    printf ("Ingrese el numero de la carta: \n");
  4.    scanf("%d",&carta.numero);
  5.    getche(); //o getchar(); lo que quieras, es solo para que leas el byte mas que esta en tu buffer de entrada
  6.    printf ("\nIngrese el palo:  E = ESPADA  || O = ORO || C = COPA || B = BASTO \n");
  7.    carta.palo=getche();
  8.    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");
  9.    scanf("%d",&carta.valor);
  10. }

Saludos!


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines