Duda sentencia switch

Iniciado por netca, 27 Julio 2012, 02:27 AM

0 Miembros y 1 Visitante están viendo este tema.

netca

Hola , tengo que validar unos parametros y tengo estos errores:

Citar
La etiqueta de 'case' no se reduce a una constante entera.
La declaracion break no esta dentro de un ciclo o switch
etc de problemas del switch.

Que es lo que estoy haciendo mal? Como tendria que hacerlo?

int chkP(char* p, char* q){
 
    switch(*p){
         case ("-n):
         ...
         break;
         case ("-k"):
         ...
         break;
         ....//Mas case
         default:
         ... break;

    }

}


int main(int argc, char* argv[]){

       ...
char* p;
       char* q;
int k;
       for(int i = 0 ; i < x ; i++){        
   p = argv[i];
   q = argv[i+1];
   k = chkP(p,q);
           if( k == 0)
               break;
       }
...
}


Saludos!

avesudra

#1
Madre de dios deberían de cortar cabezas por esto , estás comparando cadenas usa la función strcmp definida en string.h:
int chkP(char* p, char* q){
 
    if(strcmp(p,"-n")==0)
    {
     //Si la cadena p es igual que -n haz esto
     //el código
    }
    if(strcmp(p,"-k")==0)
    {
     //Si la cadena p es igual que -k haz esto
     //el código
    }
    //el código cambiado ...

}

¡Un saludo!

PD: No te tomes a mal lo de las cabezas  ;D
Regístrate en

netca

Gracias , perdon estoy aprendiendo :)

avesudra

Cita de: netca en 27 Julio 2012, 05:03 AM
Gracias , perdon estoy aprendiendo :)
Debo disculparme yo , aunque es que siempre son los mismos errores y buscar un poco nunca viene mal, pues te explico para comparar cadenas de carácteres debes usar strcmp , y antes lo que estabas intentando hacer es comparar el valor del primer carácter con algo en los cases que tampoco se podían poner, pero si estás aprendiendo ¿ya has empezado con punteros?

¡Un saludo y perdona si te ha molestado lo de antes!
Regístrate en