Problema en C

Kr4n3oK

Buenas, tengo un programilla que estoy haciendo, el problema es que tengo un switch y en el case 1: tengo el siguiente problema,os pego codigo.

    /*Caso 1 <- Introduccion de valor de la apuesta*/
               case 1:
                    printf("\t\t\tINTRODUCCION DE APUESTA\n");
                    do{
                                  printf("Introduzca el valor de la apuesta\n");
                                  scanf("%d", &apuesta);
                                  printf("El valor de la apuesta es:%d \n", apuesta);
                                  printf("¿Es la apuesta la deseada?.\n");
                                  printf("Seleccione s/n\n");
                                  scanf("%c", &a);
                                  printf("%c", &a);
                                  printf("Debajo del scan");
                    }while ( a == 'n'); 
               break;

El problema reside en que no me toma valores la variable a, como veis he hecho un printf para ver que sucede y me devuelve siempre una g, y no se de donde esta tomando ese valor la variable a, xddd es raro.
Sabeis que puede ser?
Gracias de antemano.

RaymaN

Prueba con un getchar(); debajo de cada scanf.

Thanat0s

Haz un fflush antes de leer de teclado, entre apuesta y a.

Kr4n3oK

Gracias ya me funciona:D

Kr4n3oK

Y otra pregunta mas así del tirón ya que estamos, tengo declarado una varaible array de tal modo

char participante[50];

Y el código sería:

   /*Caso 2 <- Introduccion de participante*/
               case 2:
                    printf("\t\t\tINTRODUCCION DE PARTICIPANTES\n");
                    for( i = 0 ; i <= 49 ; i++ ){
                                    printf("Introduce el participante\n");
                                    scanf("%c", &participante[i]);
                    }
                    printf("El cupo de participantes se ha llenado\n");
               break;

Lo raro es que al meter un nombre, me salta varios registros del array, es decir por ejemplo meto:
Antonio
Y ahora me envia el programa
Introduce el participante
Introduce el participante
Introduce el participante
Y aquí me deja poner otro, que puede ser eso? también el getchar?

NOTA IMPORTANTE:Acabo de descrubir que me saltan tantos Introduce el parcitipante, como caracteres tenga la palabra que anteriormente meti en el array.

NeB1

#5 lo que tu quieres es

scanf("%s", &participante);

no?? o sea string en lugar de char, si nos solo lees una letra del input por scanf("%c

Kr4n3oK

Aver, yo suponía que el tema era así con el string, por lo tanto al decirmelo tu, ya me lo corroboras, entonces ahora, la variable debo definirla como string no ?.

Pd:En fecto era eso, lo estuve mirando en inet y ya lo encontré, gracias. :D:D:D

VipeR_CS

#7 No, en C no existe el string como tal, un string simplemente es un array de chars, que es como lo tienes. Luego a la hora de mostrarlo con %s ya lo muestras completo.

Neolukas

Y si lo que quieres es guardar un array con 50 participantes, una opción sería crear una estructura, antes del main, del tipo:

typedef struct
{
      char nombre[50];  // Con el tamaño que quieras
}participante;

y después ya declarar, normalmente dentro del main:

participante  vector[50];

para coger los datos según lo tienes pues podrias hacerlo asi:

for(i=0;i<50;i++)
{
        printf("Introduzca el participante: ");
        scanf("%s",vector[i].nombre);
}

Hay otras opciones para hacerlo pero al crear una estructura te puede ayudar para luego por ejemplo ponerle otras variables como dirección, o lo que tu quieras.

neil90

char participante[] no, participante <nombre_array>[], ya que estás haciendo un typedef.

Para leer cadenas, usa alguna funcion de lectura, gets por ejemplo, aunque es muy insegura. También puedes ir haciendo cadena[x] = getchar() e ir leyendo hasta que encuentras un "\n", pero tienes que hacer un fflush cada lectura xD

Neolukas

Ya ya lo se, me equivoque al escribirlo, que rapidez XD

Usuarios habituales

  • Neolukas
  • neil90
  • VipeR_CS
  • Kr4n3oK
  • NeB1
  • Thanat0s
  • RaymaN