Página 1 de 1

deslocamento dos caracteres

MensagemEnviado: 15 Fev 2007 10:12
por eliandrostz
Olá pessoal
Alguém poderia me dizer como formatar o comando printf para que ele não desloque os caracteres para a direita quando as variaveis vierem com sinal negativo, fiz do jeito que está aí no código mas não funciona, parece que não tem como formatar o sinal para que fique em uma posição fixa.
estou usando o arquivo lcd420.c do CCS.

Código: Selecionar todos
void atualiza_display()
{
   char simb[ ]=" C";
   simb[0]=223;
   lcd_putc("\fCANAL1 CANAL2 CANAL3");
   printf (lcd_putc,"\n%3ld%s %3ld%s %3ld%s",a , simb, b, simb, c, simb);
   lcd_putc("\nCANAL4 CANAL5 CANAL6");
   printf (lcd_putc,"\n%3ld%s %3ld%s %3ld%s",d, simb, e, simb, f, simb);
}

MensagemEnviado: 15 Fev 2007 20:50
por Red Neck Guy
Uma alternativa seria fazer assim:
//(...)

if(variavel>0)
posiciona_lcd(X);
else
posiciona_lcd(X-1);

printf("%3d",variavel);

//(...)
//Exemplo meio abstrato, mas o que vale é a idéia.

MensagemEnviado: 15 Fev 2007 23:48
por styg
utilizando um espaço ' ', antes do especificador faz com que seja inserido um espaço quando nao há sinal negativo.

var = 1.6;
printf("valor= % f",var);
var = -1.6;
printf("valor= % f",var);

saida:
valor=**1.6;
valor=*-1.6; * = espaço (pra melhor visualizar)

MensagemEnviado: 16 Fev 2007 06:47
por eliandrostz
Ok Aquino, acho que a sua idéia é a mais inteligente a ser usada na falta de uma formatação adequada, obrigado.

Lucas, colocar um espaço antes do especificador não é um modo de formatação aceita pelo CCS, também tentei colocar uma váriavel tipo char = ' '; mas ela também ocupa um espaço fixo e é deslocada quando o sinal aparece, ainda assim muito obrigado pela atenção.
Se alguém tiver mais alguma idéia ajuda aí.