TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: pablolode en 22 de Diciembre de 2010, 13:24:51

Título: error al comparar cadena con strcmp
Publicado por: pablolode en 22 de Diciembre de 2010, 13:24:51
buenas gente,tengo este sensillo codigo que no se donde le estoy fallando que nunca me da  como resultado 0


char    dato2[4]="\0"
...
         
                         if (strcmp(dato2,"out")==0)//compara datos si son iguales
                  
                               dato=55; //iguales
           else
            dato=54;

         strcpy(dato2,borraBuff);   //pone a 0 bufefer dato2   

como resultado siempre obtengo mayor que 0
estoy compilando con c18
                  
Título: Re: error al comparar cadena con strcmp
Publicado por: MLO__ en 22 de Diciembre de 2010, 17:16:00
Hola.

La funcion strcmp()  permite comparar strings como tu lo escribes en C18? ... prueba primero copiar el string "out" en otra variable y comparalas a ver que sucede ... en CCS no se puede apuntar a constantes.

Saludos
Título: Re: error al comparar cadena con strcmp
Publicado por: pablolode en 28 de Diciembre de 2010, 15:55:18
copie el strin  en una variable y funciona

char dato1[]="out";
char    dato2[4];
...
         
                         if (strcmp(dato2,dato1)==0)//compara datos si son iguales
                             {...}
                 
  ahora me urge una duda tengo que comparar una cadena que recibo con varias por ejemplo 15 cadenas,
ami se me ocurre asi pero creo que es mucho codigo y seguro lleva bastante tiempo comparar las 15 de esta manera:

char     dato1[]="xxx1"
char    dato2[]=  "xx2" 
...     ......
char    dato2[]=  "xx15" 


 if (strcmp(dato_recibido,dato1)==0)//compara datos si son iguales
  {...}
if (strcmp(dato_recibido,dato2)==0)//compara datos si son iguales
  {...}
.......
.......
......
// esto lo repito unas 15 veces para compara la cadena recibida con mi dato guardado¡¡¡¡¡¡¡
alguna manera de optimizarla????
Título: Re: error al comparar cadena con strcmp
Publicado por: MLO__ en 28 de Diciembre de 2010, 16:03:05
Hola.

Que bueno que te funcionara, en C18 tampoco se puede apuntar variables en ROM.

Para lo otro, prueba declarar una variable en donde copies los strings uno a uno y los comparas dentro de un ciclo for.

Saludos
Título: Re: error al comparar cadena con strcmp
Publicado por: Suky en 28 de Diciembre de 2010, 16:17:43
...en C18 tampoco se puede apuntar variables en ROM...

Eso es erróneo, puede que la función no acepte punteros a rom (En C18 es muy fácil trabajar con punteros a rom y puntero a funciones ), pero eso ya es otra cosa.  ;-) En la ayuda indica que tipo de variables acepta.


Saludos!
Título: Re: error al comparar cadena con strcmp
Publicado por: MLO__ en 28 de Diciembre de 2010, 16:55:57
...en C18 tampoco se puede apuntar variables en ROM...

Eso es erróneo, puede que la función no acepte punteros a rom (En C18 es muy fácil trabajar con punteros a rom y puntero a funciones ), pero eso ya es otra cosa.  ;-) En la ayuda indica que tipo de variables acepta.

Saludos!

Que bueno saberlo amigo Suky. Gracias por la aclaración.

Saludos