Autor Tema: Strings en el CCS  (Leído 8929 veces)

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

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Strings en el CCS
« en: 14 de Abril de 2009, 20:20:28 »
Hola. Esto:

Código: [Seleccionar]
void Main(void)
{   
   char str[2] = {'A', '1'};
   
   if (str == "A1")
   {
      output_high(PIN_B4);
   }
   
   while (true)
   {   
   }
}

Esta bien? Ocea, se supone que deberia prender el led verdad? Pero nunca prende.

Tambien probe asi:
Código: [Seleccionar]
char str[] = "A1";

...Esto que quiere decir? No es lo mismo el c para uc's que para la pc o no es muy potente el compilador del ccs o es algun error ¿?¿?¿? Prosiaca he probado con el CCS 4.023 y 4.068.


Gracias, un saludo.

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: Strings en el CCS
« Respuesta #1 en: 14 de Abril de 2009, 21:00:38 »
Olvide decir, se supone (CREO) que se debe de usar la libreria stlib.h o una de esas para el manejo de strings PERO porq el CCS me deja compilarlo ????? creo que esa seria la pregunta  :lol:


Un saludo.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Strings en el CCS
« Respuesta #2 en: 14 de Abril de 2009, 21:10:18 »
No, no es igual. La variable string existe en lenguajes como c++ o c# pero no en el c de ccs.

Además si deseas usar strings recuerda colocar el null char al final de todo string...

char string[3]={'a','1',NULL};

o lo que es igual

char string[3]="A1"; //CCS incluye automáticamente el null char en este caso

Si en el programa usas str así:

Código: [Seleccionar]
int8 variable;
char str[2] = {'A', '1'};

...

variable=str;

El contenido de variable será la dirección de memoria en donde está alojado el primer char, en este caso sería la dirección de memoria donde está la 'A'. Eso equivale a:

Código: [Seleccionar]
variable=&str[0];
Si deseas comparar strings tendrás que incluir la librería strings.h y usar funciones como strcmp().

Y te recuerdo, todo string (arreglo de chars en CCS) que vayas a manejar con cualquier función de strings.h deberá contener un null char al final, de lo contrario tendrás problemas de acceso de memoria. Si el máximo número de chars va a ser 2, entonces el array deberá tener 3 localidades.

Otra forma de hacer la comparación es haciéndolo char por char en un ciclo for. Esto ahorraría rom de programa al no incluir strings.h.

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: Strings en el CCS
« Respuesta #3 en: 14 de Abril de 2009, 21:31:45 »
Vaya, gracias migsantiago. Si, alfinal creo que usare string.h o un con un ciclo for.

Gracias.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Strings en el CCS
« Respuesta #4 en: 14 de Abril de 2009, 21:37:40 »
Ahorra rom, el for es la mejor opción  :mrgreen:

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: Strings en el CCS
« Respuesta #5 en: 14 de Abril de 2009, 22:29:01 »
ROM tengo de sobra, aunq como solo quiero comparar un string con otro, creo q bastaria con for  :D


Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Strings en el CCS
« Respuesta #6 en: 14 de Abril de 2009, 22:51:12 »
Lo mas facil en estos casos es usar las funciones de la libreria string.h. Hay una funcion q se llama strcmp que devuelve 0 si dos cadenas son iguales.
saludos!!!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Strings en el CCS
« Respuesta #7 en: 17 de Abril de 2009, 17:34:13 »
yo prefiero ahorrar ROM y tomar RON  :-)
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Strings en el CCS
« Respuesta #8 en: 17 de Abril de 2009, 18:48:05 »
 :D :D :D

Es más barato el RON que la ROM en estos tiempos de crisis  :P

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Strings en el CCS
« Respuesta #9 en: 17 de Abril de 2009, 22:11:15 »
El problema es que con mucho RON crees que estas ahorrando mas ROM .... ya al otro dia te daras cuenta
El papel lo aguanta todo

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Strings en el CCS
« Respuesta #10 en: 17 de Abril de 2009, 22:36:07 »
ya que el tema es serio  :| :D

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Strings en el CCS
« Respuesta #11 en: 18 de Abril de 2009, 07:47:37 »
depende de cuanto RON puede ayudarte a optimizar la ROM , hay casos en que no  :ni)
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Strings en el CCS
« Respuesta #12 en: 18 de Abril de 2009, 12:14:04 »
Pues con litro y medio de RON a mi se me flashea la ROM!!!
El papel lo aguanta todo

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Strings en el CCS
« Respuesta #13 en: 18 de Abril de 2009, 12:18:25 »
 :D :D :D
Pues con litro y medio de RON a mi se me flashea la ROM!!!
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Strings en el CCS
« Respuesta #14 en: 19 de Abril de 2009, 01:44:37 »
¡Panda de borrachos!, ¡todo el día pensando en lo mismo!  :D