Ir ao conteúdo
  • Cadastre-se

Conversão e Concatenação


TBenichio

Posts recomendados

Boas...

É o seguinte, estou desenvolvendo um programa em C para ser gravado em microcontrolador e estou com problema na seguinte situação:

Tenho um vetor de inteiros que é alterado a todo momento, e eu preciso converter cada elemento desse vetor em caracter e concatenar em uma string e isso tá me dando uma dor de cabeça dos diabo.

é mais ou menos assim:

int vetor[3];

char str[3];

int i;

vetor[0] = 1;

vetor[1] = 2;

vetor[2] = 3;

for(i = 0; i < 3; i++){

//aqui preciso saber como faço para colocar cada elemento do vetor em str.

}

//no final desse for eu teria a sequencia se caracteres "123"

Como faço isso? To ficando desesperado, toda minha lógica depende disso e é pro meu TCC.

Obrigado!

Link para o comentário
Compartilhar em outros sites

De acordo com a tabela ascii, '0' equivale a 48, '1' a 49, '2' a 50... '9' a 57.

Então:

int x = 5;

char LETRA;

LETRA = x + 48;

printf("%c", LETRA);

Isso vai imprimir '5' como um caractere.


int vetor[3];
char str[3];
int i;
vetor[0] = 1;
vetor[1] = 2;
vetor[2] = 3;

for(i = 0; i < 3; i++){
str[i] = 48 + vetor[i];
}

Isso considerando que os números do vetor de inteiro vão de 0 a 9 apenas.

Link para o comentário
Compartilhar em outros sites

Eu esqueci uma coisa no código anterior... precisa do caractere '\0' pra fechar a string.


#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main() {
int n;
int x[3] = { 6, 6, 6 };
char c[4];

for (n=0; n<3; n++)
c[n] = x[n] + 48;
c[n] = '\0';

printf("%s\n", c);

if (strcmp(c, "666") == 0) printf("igual\n");

return 0;
}

Não sei porque seu código deu erro.

Tente compilar esse código aí de cima... se der o mesmo erro, então em vez de usar:

if (strcmp(str, "123") == 0) {...}

você cria antes outra string com o valor "123" e compara ela:

if (strcmp(str, str2) == 0) {...}

Link para o comentário
Compartilhar em outros sites

E como eu faço pra comparar isso agora???

To usando:


if (strcmp(str, "123") == 0) {...}

Mas tá dando esse erro:

"Attempt to create a pointer to a constant"

já que o compilador está reclamando que precisa de ponteiro para uma constante, tente:


if (strcmp(str, &"123") == 0) {...}

Mas, como o dontpanic comantou acima, deveria funcionar sem precisar de referencia.

Apenas por curiosidade. Qual compilador e S.O. você está usando?

Link para o comentário
Compartilhar em outros sites

Usando o "&" antes da constante funcionou...

Estou usando o "PIC C Compiler" (compilador CCS) e Windows 7, é um compilador para microcontroladores.

O programa que estou fazendo vai rodar em um microcontrolador e não em um computador comum, acho que essa limitação é que tá sendo o maior problema, muita coisa que o Dev aceita, por exemplo, não funciona nele...

Mas até agora, valeu pela ajuda dontpanic e ScreenBlack.

Qualquer coisa eu volto a perguntar...

Link para o comentário
Compartilhar em outros sites

Resolvido!

Achei em fórums gringos...

Coloquei isso:

#device PASS_STRINGS = IN_RAM

no começo do código daí deu certo...

A explicação que eles deram é que o microcontrolador não consegue ler a string da ROM, é preciso copiar o que se quer comparar para RAM ( strcpy(var, const) ) antes de usar no strcmp, mas adicionando essa linha ao código esse controle é feito automaticamente...

valeu pela ajuda pessoal!

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!