TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: curroortuno 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
-
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!!!
-
Hola, me parece que te falta el parametro de string en el printf
printf(lcd_putc,"%s",otra[1]);
Saludos !
-
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.
-
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 !
-
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.
-
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 !
-
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.
-
Hola proba a ver si te funciona asi:
printf(&lcd_putc,otra[1][0],22)
Por si las moscas...
Saludos !
-
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 ;)
-
La ultima prueba...en el Borland tambien tuve que modificar la declaracion del array por esta:
const unsigned char otra[][50] =
{
"Peso=%u Kg",
"Altura= %lu cm",
"Edad= %u anos",
};
Tal vez....
Saludos !
-
Tampoco...
Si alguien ha conseguido hacer esto con CCS, a ver si me puede ayudar!!!!
Muchas gracias a ti RICHI.
Un saludo