Página 1 de 1

como converter variável int em string?

MensagemEnviado: 25 Jul 2007 21:08
por blackhawk123
Gostaria de saber se existe alguma forma de trasnformar uma variável inteira em uma string para poder escreve-la em um LCD. Estou usando a seguinte funão para escrever no LCD:


Código: Selecionar todos
void Escrece(char cmd)
{
    RS=1;
    RW=0;
    LCD=cmd;
    PULSE_CLOCK;
    Tempo(2);
}


Mas quando eu passo uma variável para a funçao escreve ela escreve o caractere ascii corespondente ao valor da variável.

E também tenho essa outra função, mas quando eu passo uma variável inteira para ela o SDCC não compila.

Código: Selecionar todos
void Escreve(char* texto)
{
    while(texto[cont]!=0x00)
    {
        if(cont==16)
        {
            lcd_goto(1,0);
            RS=1;
            RW=0;
        }
       
        if(cont==37)
        {
            lcd_goto(0,0);
            RS=1;
            RW=0;
        }
       
        LCD=texto[cont];
        PULSE_CLOCK;
        Tempo(2);
        cont++;
}


Tem alguma forma de transformar o valor de uma variável inteira em string?

MensagemEnviado: 25 Jul 2007 21:43
por barboza
Use o link de procura que você irá encontrar algumas maneiras de fazer isso.
A mais trivial é usando o sprintf.

MensagemEnviado: 26 Jul 2007 12:52
por msamsoniuk
veja se vc tem a funcao itoa() no seu compilador. se nao tiver, eu tenho uma implementacao disponivel aqui:

http://framework.sf.net/hc908sh/examples/shell/?shell.c

MensagemEnviado: 26 Jul 2007 16:58
por blackhawk123
barboza, Eu consegui usar o sprintf, mas fiquei com uma dúvida:
Tem como eu passar umas string que não tem o limete de caracteres declarado?
Ex:
Código: Selecionar todos
char* texto;
int cont=50;
sprintf(texto,"Contagem=%d",cont);



Marcelo Samsoniuk, a funcão que você falou funcionou, mas quando eu uso ela no final do número ela adiciona um espaço. Se o valor da variável é "200" a função retorna "200 ". Eu não consegui entender como a função funciona. Tem como torar esse espaço que ela ta colcoando?

MensagemEnviado: 26 Jul 2007 18:22
por ivan
Black,

O q vc se refere como espaço no final da string deve ser o '\n' q é o terminador da string em C. O '\n' é padrão da linguagem. Qdo se usa um sprintf ou printf da vida, a função sabe que a string terminou qdo encontra o '\n'.
Qto ao sprintf, já tive probs ao usar códigos semalhantes ao q vc escreveu pq o compilador aloca a área de memória loacal à função sprintf para fazer a transferência de dados, mas não quer dizer q esta área ficará permanentemente disponível pra uso. Ela pode ser reutilizada em outro momento pelo compilador e vc terá um ponteiro(char *texto) apontando para um conteúdo indesejado.
Evite isso usando o sprintf, e afins, em áreas previamente alocadas por vc! Ex: char texto[30];

MensagemEnviado: 27 Jul 2007 18:34
por blackhawk123
ivan escreveu:Black,

O q vc se refere como espaço no final da string deve ser o '\n' q é o terminador da string em C. O '\n' é padrão da linguagem. Qdo se usa um sprintf ou printf da vida, a função sabe que a string terminou qdo encontra o '\n'.
Qto ao sprintf, já tive probs ao usar códigos semalhantes ao q vc escreveu pq o compilador aloca a área de memória loacal à função sprintf para fazer a transferência de dados, mas não quer dizer q esta área ficará permanentemente disponível pra uso. Ela pode ser reutilizada em outro momento pelo compilador e vc terá um ponteiro(char *texto) apontando para um conteúdo indesejado.
Evite isso usando o sprintf, e afins, em áreas previamente alocadas por vc! Ex: char texto[30];


ok, obrigado