Autor Tema: printf a una constante  (Leído 2243 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado curroortuno

  • PIC10
  • *
  • Mensajes: 6
printf a una constante
« en: 17 de Abril de 2008, 05:17:27 »
Hola a todos,

Quiero incluir una cadena de caracteres constante en el argumento del printf para mostrar por LCD con lcd_putc pero no consigo que muestre bien la cadena. El código concreto es el siguiente:

----------------------------------------------------
char const otra[3][* ] =
{
   "Hello",
   "World",
   "Longword"
};

void main(void)
{

// Inicializado Lcd
...

// Escribo la segunda palabra (Word) por pantalla
printf(lcd_putc,otra[1]);
----------------------------------------------------------

Pero no me muestra "Word" en la lcd, ¿alguna solución para conseguir introducir una cadena de caracteres constante en el printf?
Muchas Gracias

Desconectado Slalen

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1079
    • Página web personal de Guillermo Herrero González
Re: printf a una constante
« Respuesta #1 en: 17 de Abril de 2008, 09:40:13 »
Para que esté todo el rato debes mandarla cada vez.

Yo declararía la cadena de 4 términos y el cuarto sería la palabra que varía.

Porque, que yo recuerde, no hay una opción para mantener fija la lcd y escribir el resto. A no ser que modifiques caracter por caracter.

Pero esto no lo he probado en c sólo lo he hecho en assambler.


A ver si alguien te puede ayudar más que yo.

Suerte!!!

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: printf a una constante
« Respuesta #2 en: 17 de Abril de 2008, 11:33:27 »
Hola, me parece que te falta el parametro de string en el printf
Código: [Seleccionar]
printf(lcd_putc,"%s",otra[1]);
Saludos !

Desconectado curroortuno

  • PIC10
  • *
  • Mensajes: 6
Re: printf a una constante
« Respuesta #3 en: 17 de Abril de 2008, 13:42:09 »
Muchas Gracias a los dos!

Creo que introduciendo "%s" en el printf a una constante ya funciona correctamente. Ahora el problema que tengo es el siguiente: Si quiero meterle algún valor en medio de la cadena constante, al hace "%s" ya no me lo reconoce. Es decir:

char const otra[3][* ] =
{
   "Hello",
   "World",
   "T= %c grados"
};

La tercera cadena, al tener un "%c" en su interior no puedo mostrarla con:

char simbolo = 0xdf; //simbolo que quiero introducir con el %c
printf(lcd_putc, "%s", otra[2],simbolo);

Esto no funciona...¿Hay alguna forma de poder mostrar esa cadena constante con printf y el valor asociado sin tener que partir en dos la cadena?

Perdonad la insistencia en este tema y muchas gracias.
« Última modificación: 17 de Abril de 2008, 13:45:03 por curroortuno »

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: printf a una constante
« Respuesta #4 en: 17 de Abril de 2008, 14:40:41 »
Hola, al printf le tenes que pasar tantos parametros como "%" le pongas...ejemplo
char simbolo = 0xdf; //simbolo que quiero introducir con el %c
printf(lcd_putc, "%s%c", otra[2],simbolo);
Porque no explicas mejor que queres hacer porque no te entiendo bien.
Saludos !
« Última modificación: 17 de Abril de 2008, 14:46:15 por RICHI777 »

Desconectado curroortuno

  • PIC10
  • *
  • Mensajes: 6
Re: printf a una constante
« Respuesta #5 en: 17 de Abril de 2008, 16:29:21 »
Hola de nuevo,

Lo que quiero hacer exactamente es definir la cadena constante con los % ya incluido para mezclar caracteres con números. Por ejemplo:

const otra[3][* ]={
    "Peso=%u Kg"
    "Altura= %Lu cm"
    "Edad= %u años"
}

Y a partir de esto poder incluir alguna de estas cadenas en la LCD con un printf. Por ejemplo:

printf(lcd_putc,otra[2], 22); // Quiero que mostrase: "Edad= 22 años"

Sin embargo, haciéndolo así no sale esa cadena. ¿Me he explicado ahora mejor? ¿Podríais darme una solución?

Gracias de nuevo.

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: printf a una constante
« Respuesta #6 en: 17 de Abril de 2008, 16:54:14 »
Hola,  como yo no uso CCS, lo probe en Borland y ye el ejemplo que pasaste anda perfecto anda perfecto, pero por lo menos te lo tuve que modificar lo sgte:
  • Colocar comas para separar los 3 elementos del Array otra
  • Es %lu y no %Lu

Con eso anduvo joya !
Saludos !

Desconectado curroortuno

  • PIC10
  • *
  • Mensajes: 6
Re: printf a una constante
« Respuesta #7 en: 17 de Abril de 2008, 17:18:19 »
Maldito CCS!!!!

En CCS no va....

Al hacer "printf(lcd_putc,otra[1],22)" me muestra:

    "Peso=%u Kg Altura= 22 cm"

Jeje, no solo me muestra la segunda cadena sino que también muestra la primera. Y si lo hago para la tercera me muestra las tres (con sus respectivos %).

Bueno seguiré intentando. MUCHISIMAS GRACIAS!!!

Un saludo.
« Última modificación: 17 de Abril de 2008, 17:24:53 por curroortuno »

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: printf a una constante
« Respuesta #8 en: 17 de Abril de 2008, 17:36:55 »
Hola proba a ver si te funciona asi:
printf(&lcd_putc,otra[1][0],22)
Por si las moscas...
Saludos !

Desconectado curroortuno

  • PIC10
  • *
  • Mensajes: 6
Re: printf a una constante
« Respuesta #9 en: 17 de Abril de 2008, 18:00:52 »
Que va!
No compila por la síntesis.
Creo que al poner otra[1][0] coge sólo el primer carácter y no entiende entonces porqué se mete como tercer argumento "22".

Un saludo y gracias por tu empeño...
Yo sigo probando ;)

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: printf a una constante
« Respuesta #10 en: 17 de Abril de 2008, 18:10:25 »
La ultima prueba...en el Borland tambien tuve que modificar la declaracion del array por esta:
Código: [Seleccionar]
const unsigned char otra[][50] =
{
  "Peso=%u Kg",
  "Altura= %lu cm",
  "Edad= %u anos",
};
Tal vez....
Saludos !


Desconectado curroortuno

  • PIC10
  • *
  • Mensajes: 6
Re: printf a una constante
« Respuesta #11 en: 18 de Abril de 2008, 03:47:43 »
Tampoco...

Si alguien ha conseguido hacer esto con CCS, a ver si me puede ayudar!!!!

Muchas gracias a ti RICHI.

Un saludo