formatar string

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

formatar string

Mensagempor cristian » 06 Abr 2010 07:23

galera

estou usando

unsigned char x , txt[6];
x=10;
wordtostr( x, txt)
lcd_out(1,1,txt)

como eliminar os espaços na hora de enviar para o display

e tb quero inserir '0' exemplo 0010
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba

Mensagempor dreher » 06 Abr 2010 08:10

Olha, não sei se é o jeito mais elegante, mas eu faço assim:
substituir espaço por zero:
Código: Selecionar todos
void replace_char(char *s1, const char old_char, const char new_char){
     char *pnt1;
     pnt1=s1;
     while (pnt1!=0)
     {
           pnt1=strchr(s1,old_char);
           *pnt1=new_char;
     }

}


e para limpar os espaços:
Código: Selecionar todos
void trim(char *from, char *to){
     char *pnt1;
     pnt1=rtrim(from);
     while (*pnt1!=0){
           *to=*pnt1;
           pnt1++;
           to++;
     }
     while (*to!=0) {*to=0;to++;}
}


Se alguem tiver uma solução mais elegante, eu tambem vou agradecer
dreher
Byte
 
Mensagens: 489
Registrado em: 12 Out 2006 11:10
Localização: Blumenau - SC

Mensagempor fabim » 06 Abr 2010 08:40

espaço ? ué. você definiu txt[6]..
utilizou só 3 bytes.
Queria o que ?
á queria que desses 6 ele preenche-se formatado a esquerda....
bom, não seria lógico né ? se um numero se conta da esquerda para direita..
de qualquer forma, se quer zeros no lugar dos espaços.
WordTostrWithZeroes(var, str);
bom, eu nem vou falar que essa rotina faz é simplesmente ver se o que tem no byte é um valor igual a espaço, se sim, então valor = '0';

Agora usar o TRIM, seria para uma string grandona.
E usa-se apenas em PC nos SO, se ja esta mechendo com uC e fazendo tudo, basta um simples teste de espaço pra saber que depois tem que puxar os bytes uma ou N casas para esquerda para tapar os espaços..

dreher, comente esses comandos e da uma olhada na diferença do tamanho do hex..

Abraços
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor dreher » 06 Abr 2010 09:22

Bom, onde eu usei isso, era necessário, devido ao tamanho das strings que eu tive que manipular, e esse espaço nem é perceptivel perto do trabalho que daria nas outras rotinas. Mas realmente, cada caso é um caso, e no meu, essa rotina funcionou muito bem pra aquilo que eu queria
dreher
Byte
 
Mensagens: 489
Registrado em: 12 Out 2006 11:10
Localização: Blumenau - SC

Mensagempor tcpipchip » 06 Abr 2010 09:37

POOOO,

Vai me dizer que ja tem aquela funcao ??? :)


if(strlen(numeros_pcs_mts)==0)
{
strcpy(txt_digitado,"00000");
}

if(strlen(numeros_pcs_mts)==1)
{
strcpy(txt_digitado,"0000");
strcat(txt_digitado,numeros_pcs_mts);
}

if(strlen(numeros_pcs_mts)==2)
{
strcpy(txt_digitado,"000");
strcat(txt_digitado,numeros_pcs_mts);
}

if(strlen(numeros_pcs_mts)==3)
{
strcpy(txt_digitado,"00");
strcat(txt_digitado,numeros_pcs_mts);
}
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x