Autor Tema: error al comparar cadena con strcmp  (Leído 3048 veces)

0 Usuarios y 3 Visitantes están viendo este tema.

Desconectado pablolode

  • PIC16
  • ***
  • Mensajes: 123
error al comparar cadena con strcmp
« 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
                  

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: error al comparar cadena con strcmp
« Respuesta #1 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
El papel lo aguanta todo

Desconectado pablolode

  • PIC16
  • ***
  • Mensajes: 123
Re: error al comparar cadena con strcmp
« Respuesta #2 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????

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: error al comparar cadena con strcmp
« Respuesta #3 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
El papel lo aguanta todo

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: error al comparar cadena con strcmp
« Respuesta #4 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!
No contesto mensajes privados, las consultas en el foro

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: error al comparar cadena con strcmp
« Respuesta #5 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
El papel lo aguanta todo