Página 1 de 1
Duvida variavel %

Enviado:
14 Nov 2007 14:11
por buiz
Olá,
Estou com o seguinte problema.
Tenho que escrever no display LCD uma variavel, só que hora ela será inteira e hora string.
Exemplo:
int numero = 2;
char letra [] = {"ABC"};
char opcao;
//dependendo da condição:
//se condição=1 entao opcao=numero e mostra no display
//se condição=2 entao opcao=letra e mostra no display
printf (lcd_escreve,"%s",opcao); // Escreve no display
Não sei se fui claro na minha duvida, mas basicamente hora tenho que escrever um numero inteiro no display e hora uma mensagem em caracter.
Aproveitando a mesma variavel "opcao" e atribuindo a ela um inteiro ou uma string.
Obrigado a quem puder ajudar!
Buiz.

Enviado:
14 Nov 2007 14:52
por Fábio Pereira
Tem certeza de que você sabe o que quer fazer ?
Me parece que você tem um grande erro conceitual no seu programa ...
Que tal:
if (condicao==1) printf (lcd_escreve,"%s",letra);
if (condicao==2) printf (lcd_escreve,"%u",numero);
T+

Enviado:
14 Nov 2007 15:21
por buiz
Tenho certeza
Desculpe se fiz uma colocação meio direta tipo condicao=
Ficaria simples assim com certeza
if (condicao==1) printf (lcd_escreve,"%s",letra);
if (condicao==2) printf (lcd_escreve,"%u",numero);
Só que são varias condições e eu teria que fazer varios printf aumentando o tamanho do programa.
Para ser mais diteto, tenho 3 teclas (mais, menos e Confirma)
e uma senha de 6 digitos.
Para segurança eu queria substituir o numero digitado por * a cada confirmação.
Exemplo: a senha é SENHA: 123456
quando eu colocar o numero 1 e confirmar, o numero vai para a memoria e no lugar do numero aparece um *.
ex: SENHA: *23456
no final o LCD estara assim: SENHA: ******
Ja pensei em fazer as 6 comparações e 6 printf
mas ficaria bem mais simples e economico se ao final de cada numero confirmado eu mandasse ele para a memoria e substituise no LCD por um *.
Parece complicado, ja fiz varios testes, quando funciona o inteiro não funciona o caracter, quando funciona o caracter não funiona o inteiro.
Para dar certo, tenho que atribuir um valor inteiro a uma variavel char.

Enviado:
14 Nov 2007 16:26
por ze
não entendi mui bien.
mas não necessariamente várias condições. números de 0 a 9 seria algo como:
if ((num>=0) && (num<10)) printf(número)... //odeio printf para display lcd!! tenho meu código precioso para ele. aliás, já postei...
else printf(caracter);
ou senão converta e trate tudo para string com a função sprintf. (esta sim já me foi útil!)
nada a ver?
abrç

Enviado:
14 Nov 2007 17:00
por buiz
Pois é, ja li algo sobre esta função (sprintf), com é que ela funciona mais precisamente?
Estou no tenta e erra por enquanto, mas não vou desistir.
Abraços Buiz.

Enviado:
14 Nov 2007 18:22
por Maurício
Fala, buiz.
Tem que olhar no manual do seu compilador, quais são os parâmetros que a função sprintf aceita. E a maneira de se passar esses parâmetros para a função.
Na maioria deles, vc cria um buffer (string) e passa esse buffer para a função como área de destino da conversão.
Uma outra forma tb, é vc decompor o seu número inteiro, através de divisões, e adicionando 30H à cada número decomposto.
O LCD é uma memória que exibe caracteres ASCII.
[]'s

Enviado:
16 Nov 2007 08:40
por ze
Quanto ao uso do sprintf usei-o numa função itoa() - (obs:se já tem na sua biblioteca, use-a) :
char* itoa(int value, char *string)
{
sprintf(string, "%d", value);
return string;
}
{
unsigned int t1;
...
itoa(t1,txt);
msgdsp(0,4,txt);
...
}
No começo parece difícil, mas depois piora. No final voce descobre que é impossível.
abrç