Autor Tema: Escribir frase en LCD ( compilador SDCC )  (Leído 6505 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado teleko

  • PIC10
  • *
  • Mensajes: 41
Re: Escribir frase en LCD ( compilador SDCC )
« Respuesta #15 en: 24 de Noviembre de 2008, 08:37:11 »
Creo que el fallo está en el asterisco que le pones, pasa como un puntero a la función, y por eso sólo te muestra la primera letra.

Para poder pasar el puntero a la función, creo que lo deberías pasar por referencia. Habría que definir la función asi:

void lprintf (char * &frase)

Aquí lo explican mejor:

punteros

Desconectado cerebro

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 735
Re: Escribir frase en LCD ( compilador SDCC )
« Respuesta #16 en: 24 de Noviembre de 2008, 11:55:32 »
Creo que el fallo está en el asterisco que le pones, pasa como un puntero a la función, y por eso sólo te muestra la primera letra.

Para poder pasar el puntero a la función, creo que lo deberías pasar por referencia. Habría que definir la función asi:

void lprintf (char * &frase)

Aquí lo explican mejor:

punteros

hola teleko de esa manera lo unico que se modifica es que al salir de la funcion los cambios que hagamos sobre el puntero se mantienen debido a que le estamos pasando la direccion de memoria del puntero y no una copia del mismo como lo haciamos antes. No lo probe pero me parece que no va a funcionar, debido a que siempre estamos trabajando dentro de la funcion.

 Saludos
LAS MALVINAS SON ARGENTINAS!

Desconectado arcachofo

  • PIC16
  • ***
  • Mensajes: 126
    • Foro para usuarios Linux.
Re: Escribir frase en LCD ( compilador SDCC )
« Respuesta #17 en: 24 de Noviembre de 2008, 23:31:11 »
Gracias Teleko, pero no me ha funcionado tu sugerencia, estoy casi seguro de el fallo no está en este código sino en alguna librería que me falta o algo por el estilo, he probado muchas variantes de la rutina y la mayoría se compilan bién y el programa funciona, yo creo que el puntero viene con un espacio o algún valor erroneo, si viniera vacío saldría de la función...no?... ya he probado a que imprima el nº de posición al lado del caracter y los imprime todos, osea que en realidad recorre toda la cadena pero no devuelve el valor correcto.. o está leyendo posiciones erroneas de memoria o algo de eso pasa.

Cerebro:
antes me dijiste como te funcionaba a ti: char a[ ]="abcdefg"; y te dije que el compilador no me lo aceptaba, pero era solo un error de escritura, así si me lo acepta: char a[]="abcdefg"; o así: char a[8]="abcdefg"; pero esto sigue haciendo lo mismo.