Autor Tema: concatenado de caracteres  (Leído 4218 veces)

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

Desconectado kikecon

  • PIC10
  • *
  • Mensajes: 35
concatenado de caracteres
« 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.          ;)
Enrique Contreras R.

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: concatenado de caracteres
« Respuesta #1 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
El papel lo aguanta todo

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: concatenado de caracteres
« Respuesta #2 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.
« Última modificación: 17 de Febrero de 2010, 01:03:17 por gera »

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