Go Down

Topic: Unir caracteres en una variable (Read 2573 times) previous topic - next topic

Alonso Lazcano

hola, estoy trabajando en un proyecto con comunicacion serial, y me gustaria saber como juntar caracteres almacenados en un arreglo (letras) en una sola variable.. he intentado, pero no lo he logrado.
hmm me explico..

char a[3];
char p;

a[0] = h
a[1] = o
a[2] = l
a[3] = a

...

p=hola

me explico? como llego a que la variable p sea "hola" y escribirla por el puerto serial

Serial.print(p);  

Pofenas

creo que la opcion mas sencilla es, declarar a con un elemento mas de los que va a contener, y asignar null a este elemento. Te cuento un poco:

En Arduino, los strings son arrays de caracteres 'null terminated', lo que hace muchos años llamabamos cadenas asciiz. Por eso, tu tratas tu array de char tal y como lo estas haciendo, y despues, te aseguras de que el ultimo byte está a null, simplemente asignandolo. Asi,
a[5] =0;
Serial.print(a);
deberia de producir el efecto que deseas.

Pofenas


Alonso Lazcano

#3
Apr 16, 2010, 06:37 am Last Edit: Apr 16, 2010, 06:38 am by alolazcano Reason: 1
pero como los junto en una sola variable.. por ej.. que la variable p valga "hola"
algo asi como..

p= a[0]+a[1]+a[2]+a[3];

p=hola

???

Sixto Rojas

Hola, ¿Còmo solucionaste el unir caracteres en un sòlo string?

chiva

#5
Jun 17, 2010, 05:35 pm Last Edit: Jun 17, 2010, 05:36 pm by chiva Reason: 1
Como ha dicho Profenas, con poner un a[4]='\0' ya tienes un string
a[0]='h'
a[1]='o'
a[2]='l'
a[3]='a'
a[4]='\0'

Nos quedaría:
a="hola"

Pero si quieres copiarlo de un char a otro char, pos es una simple copia de vectores con un bucle:

p[0]=a[0]
p[1]=a[1]
.
.
.

Mírate algún libro de C, donde expliquen vectores, ya que son un poco lio de entender al principio.

Un saludo
Mercadillo electrónico. Kit iniciación a Arduino, shield LCD a color y más cosas!

diablet69

Si no recuerdo mal, seria:


for (n=0; n<strln(a)-1 ; n++)
{
p[n] = a[n];
}

Alguien dira porque "n<strln(a)-1"

Pues porque STRLN(a) devuelve el numero de caracteres de la cadena "A".

Entoneces si devuelve 4 (Ejemplo de HOLA) la A esta posicionada en a[3], por eso el -1.

En cambio si deseamos tambien copiar el  '\0'  no debemos poner el -1 y quedaria asi:


for (n=0; n<strln(a); n++)
{
p[n] = a[n];
}

Heke

No se si ya tienes solucionado el problema pero te comento que yo para unir strings, he empleado la libreria Wstring que viene con arduino.

#include <WString.h>

Un saludo.
CUIDADO !! MIS POST NO SON APTOS PARA MENORES. SI ERES MENOR DE 14 AÑOS DEBES DE LEERLOS ACOMPAÑADO DE UN ADULTO

Go Up