TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: kikecon en 16 de Febrero de 2010, 23:51:01

Título: concatenado de caracteres
Publicado por: kikecon en 16 de Febrero de 2010, 23:51:01
hola amigos del foro:
 Nuevamente de vuelta por el foro tengo una curiosidad con el concatendo en compiladores para pic bueno particularmente y a diferencia de muchos en el foro uso sourceboost por el momento, bueno el hecho es que tngo un pequeño proyecto de una chapa electronica la cual cuenta con varios codigos de acceso (claves) el cual lo ingresaria por un teclado matricial, bueno el hecho es que al ingresar el codigo de 4 digitos (ejemplo: 1245) este se almacena en un arreglo de la siguiente manera:
x[0]=1;x[1]=2;x[2]=4;x[3]=5.
bien de esta manera tendria x[LIM]={1,2,4,5}, pero de que manera puedo lograr que este dato se convierta en un dato consecutivo es decir que tnga esto en otra variable de la siguiete manera:
dato=x[LIM] y que ahora obtenga dato=1245, un amigo del foro (MLO) me recomendo usar la funcion itoa perono cuento con esta funcion en sourceboost luego me recomedo pasarlo a BDC pero no tengo idea de como hacerlo (me imagino que es la mejor opcion pero no se como hacerlo  :?)por lo que sito a este nuevo tema para que colaboren conmigo.
Otro detalle, he hecho una funcion que anteriormente la use para concatenar cadenas en un compilador lamado dev c++ que no es para pics bueno esta es la funcion:

void unir(char*p,char*q)
{
     while(*p)
      p++;
     while(*q)
     {
       *p=*q;
         p++;
         q++;
     }
     *p=NULL;
}

Bueno como les digo con esta funcion puedo concatenar en dev c++ (no es compilador de pic) pero en el sourceboost no me funciona y me dice que hay un error con los punteros lo cual lo modifique con p y q[j] pero bueno no obtuve buenos resultados ojala alguien tenga alguna idea y observaciones muchas gracias muchachos. saludos

PD= LIM esta definido como 4.          ;)
Título: Re: concatenado de caracteres
Publicado por: MLO__ en 17 de Febrero de 2010, 00:03:32
Hola.

La funcion es la atoi(), si quieres pasar de string a entero, pero debes pasar a string los datos almacenados en el buffer, esto es sencillo: le sumas '0' a cada numero.

Si vas a comparar los buffers, no es necesario pasarlo a otro tipo de variable; se podria hacer comparando posicion a posicion los buffers, si coinciden todas los valores de todas las pocisiones, la clave estara correcta, de caso contrario, no lo estara.

Saludos
Título: Re: concatenado de caracteres
Publicado por: gera en 17 de Febrero de 2010, 00:59:21
Claro, si lo que queres es chequear que la clave tenga un valor especifico, lo unico q tenes q hacer es cargar otro buffer con ese valor especifico y comprobar posicion a posicion que sean iguales. No veo la necesidad de convertir los valores en caracteres, salvo que te lo pidan explicitamente.
saludos!!

PD: de ultima podes usar la funcion sprintf en lugar de itoa, fijate si tu compilador la tiene.