Go Down

Topic: Re: Problemas con char y char* (Read 750 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