Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/05/2009, 15:03
Avatar de neandertal
neandertal
 
Fecha de Ingreso: enero-2008
Ubicación: Barcelona
Mensajes: 79
Antigüedad: 17 años, 1 mes
Puntos: 1
scanf no recoge bien caracteres

Hola, tengo un problema con el siguiente código:

Código:
    int valoresd[parametros[0]];
    float valoresf[parametros[0]];
    char valoresc[parametros[0]];
    char valoress[parametros[0]][100];
    if(parametros[1]==1){
                         printf("Introduzca los valores enteros\n");
                         for(i=0; i<parametros[0]; i++){
                                  printf("Valor %d: ",i+1);
                                  scanf("%d",&valoresd[i]);
                         }
    }
    if(parametros[1]==2){
                         printf("Introduzca los valores decimales\n");
                         for(i=0; i<parametros[0]; i++){
                                  printf("Valor %d: ",i+1);
                                  scanf("%f",&valoresf[i]);
                         }
    }
    if(parametros[1]==3){
                         printf("Introduzca los caracteres\n");
                         for(i=0; i<parametros[0]; i++){
                                  printf("Valor %d: ",i+1);
                                  scanf("%c",&valoresc[i]);
                         }
    }
    if(parametros[1]==4){
                         printf("Introduzca las cadenas de caracteres\n");
                          for(i=0; i<parametros[0]; i++){
                                  printf("Valor %d: ",i+1);
                                  scanf("%s",&valoress[i]);
                         }
    }
Donde parametros[1] es un valor numérico que solo puede tener valores enteros del 1 al 4.

Cuando parametros[1] es 1,2 o 4 funciona perfecto y sin ningún problema, pero cuando parametros[1] es 3, entonces es como si no me cogiera bien el scanf,

La salida normal del programa en 1,2 i 4 es:

Valor 1: <espera a que introduzca valor>
Valor 2: <espera a que introduzca valor>
Valor 3: <espera a que introduzca valor>
Valor parametros[0]: <espera a que introduzca valor>

Pero en parametros[1]==3 me da la siguiente salida:

Valor 1:Valor 2: <espera a que introduzca valor>
Valor 3:Valor 4: <espera a que introduzca valor>
Valor parametros[0]-1:Valor parametros[0]: <espera a que introduzca valor>


He comprobado los valores de parametros[0] y parametros[1] cuando entra en el if, pero no encuentro el problema por ninguna parte, y las estructuras de los 4 condicionales son exactamente iguales.

Estoy muy frustrado con este problema...