como converter variável int em string?

Software e Hardware para linha x51

Moderadores: 51, guest2003, Renie, gpenga

como converter variável int em string?

Mensagempor blackhawk123 » 25 Jul 2007 21:08

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?
blackhawk123
Bit
 
Mensagens: 27
Registrado em: 15 Out 2006 17:05

Mensagempor barboza » 25 Jul 2007 21:43

Use o link de procura que você irá encontrar algumas maneiras de fazer isso.
A mais trivial é usando o sprintf.
Os homens mentiriam muito menos se as mulheres fizessem menos perguntas.
Avatar do usuário
barboza
Word
 
Mensagens: 948
Registrado em: 17 Out 2006 13:42
Localização: Longe de onde gostaria de estar

Mensagempor msamsoniuk » 26 Jul 2007 12:52

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
Editado pela última vez por msamsoniuk em 13 Ago 2008 03:20, em um total de 1 vez.
Avatar do usuário
msamsoniuk
Dword
 
Mensagens: 2935
Registrado em: 13 Out 2006 18:04

Mensagempor blackhawk123 » 26 Jul 2007 16:58

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?
blackhawk123
Bit
 
Mensagens: 27
Registrado em: 15 Out 2006 17:05

Mensagempor ivan » 26 Jul 2007 18:22

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];
"A mente que se abre a uma nova idéia jamais volta ao seu tamanho original." (Albert Einstein).
Avatar do usuário
ivan
Word
 
Mensagens: 618
Registrado em: 12 Out 2006 21:27

Mensagempor blackhawk123 » 27 Jul 2007 18:34

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
blackhawk123
Bit
 
Mensagens: 27
Registrado em: 15 Out 2006 17:05


Voltar para 8051

Quem está online

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

x