Pages: [1]   Go Down
Author Topic: Unir caracteres en una variable  (Read 1710 times)
0 Members and 1 Guest are viewing this topic.
Chile
Offline Offline
Newbie
*
Karma: 0
Posts: 42
Arduino Chile
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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);  
Logged

Albacete
Offline Offline
Full Member
***
Karma: 0
Posts: 140
Arduino mola que te pasas
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Albacete
Offline Offline
Full Member
***
Karma: 0
Posts: 140
Arduino mola que te pasas
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Perdon, debi escribir a[4]=0;
Logged

Chile
Offline Offline
Newbie
*
Karma: 0
Posts: 42
Arduino Chile
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

???
« Last Edit: April 15, 2010, 11:38:32 pm by alolazcano » Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 3
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Offline Offline
Edison Member
*
Karma: 23
Posts: 1375
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
« Last Edit: June 17, 2010, 10:36:43 am by chiva » Logged

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

Lleida - SPAIN
Offline Offline
Jr. Member
**
Karma: 0
Posts: 59
Adicto al Arduino
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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];
}
Logged

Spain
Offline Offline
God Member
*****
Karma: 25
Posts: 956
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

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

Pages: [1]   Go Up
Jump to: