Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: netca en 27 Julio 2012, 02:27 am



Título: Duda sentencia switch
Publicado por: netca en 27 Julio 2012, 02:27 am
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?

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

     }

}

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


Título: Re: Duda sentencia switch
Publicado por: avesudra en 27 Julio 2012, 04:04 am
Madre de dios deberían de cortar cabezas por esto , estás comparando cadenas usa la función strcmp definida en string.h:
Código
  1. int chkP(char* p, char* q){
  2.  
  3.     if(strcmp(p,"-n")==0)
  4.     {
  5.      //Si la cadena p es igual que -n haz esto
  6.      //el código
  7.     }
  8.     if(strcmp(p,"-k")==0)
  9.     {
  10.      //Si la cadena p es igual que -k haz esto
  11.      //el código
  12.     }
  13.     //el código cambiado ...
  14.  
  15. }
¡Un saludo!

PD: No te tomes a mal lo de las cabezas  ;D


Título: Re: Duda sentencia switch
Publicado por: netca en 27 Julio 2012, 05:03 am
Gracias , perdon estoy aprendiendo :)


Título: Re: Duda sentencia switch
Publicado por: avesudra en 27 Julio 2012, 05:17 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!