Go Down

Topic: Unir caracteres en una variable (Read 2750 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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy