Go Down

Topic: Re: Problemas con char y char* (Read 793 times) previous topic - next topic

curro92

Si se trata de un puntero a cadena char (declarada, por ejemplo, como char *texto), se puede recorrer así:

while(*texto != '\0')
  Serial.print(*texto++);


riscking

Aupi, el problema esque con Serial.print(buf) va perfecto en el serial monitor pero buf es un char y al lcd le tengo que pasar en char *string y no se como hacerlo.
SAludos.

Pofenas

Serial.print(buf);

En un array de caracteres (buf[]) buf se refiere al puntero a la primera posicion.

riscking

Pofenas no te he entendido muy bien lo que querias decir, el problema lo tengo con

lcd.LCD_3310_write_string(0, 0,buf, MENU_NORMAL);

que me suelta esto:
error: invalid conversion from 'char' to 'char*'
error: initializing argument 3 of 'void LCD_3310_write_string(unsigned char, unsigned char, char*, char)'

En la consola me va bien Serial.print(buf); pero buf en el lcd no.

He probao con
Code: [Select]
int16_t c;
 while ((c = file.read()) > 0){
   Serial.print((char)c);
   lcd.LCD_3310_write_string(0, 0,(char)c, MENU_NORMAL);
 }


pero me sale el mismo error
error: invalid conversion from 'char' to 'char*'

Me esta trayendo de cabeza.

curro92

Estás pasando un carácter cada vez, y la función necesita una cadena entera acabada en '\0'. Creo que primero debes llenar el string completo con el while() , y luego pasarle a lcd.LCD_3310_write_string() el puntero a ese string.

Code: [Select]

 char texto[33]  // suponiendo que no habrá mensaje más largo
 int n;

 int16_t c;

 n = 0;
 while ((c = file.read()) > 0)
 {
     texto[n++] = c;
 }
 texto[n] = '\0';
 
 // y ahora puedes pasar el puntero char a la función
   lcd.LCD_3310_write_string(0, 0, &texto[0], MENU_NORMAL);
 }





riscking

curro92 eso era si señor, por eso me salian caracteres raros cuando probe algo parecido.

Ahora el problema esque me imprime todo y los saltos de linea de forma rara, me gustaria que me separase cada linea y convertir las cadenas de texto en array para manejarlos con un joystick a trves de los punteros, pero no se como separar el texto en cada salto o "/n", seria lago como explode en php pero en c ni idea.

riscking

#6
Oct 14, 2010, 11:26 pm Last Edit: Oct 14, 2010, 11:26 pm by riscking Reason: 1
Ya he conseguido cortar por cada salto de linea la primera palabra, vamos progresando, si tengo mas problemas os digo.

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