concatenar int, float, char

Olá pessoal tudo bem?
Estou tentando concatenar 3 tipos de dados diferentes, int, char e float, int e char eu consigo sem problemas, mas no caso do float não funciona, até consegui alguma coisa só que as casas decimais do float depois da virgula não aparecem. Se puderem me ajudar agradeço muito.

Luis andrade

Se pudesses colocar aqui o código que tens para podermos ajudar também ficamos agradecidos.

Já experimentaste o ftoa();

Segue o codigo que inicie os testes.

int n_cocho = 1;
char tag_boi "1FI4566WD3";
float peso_cocho = 30,45;

void setup(){
Serial.begin(9600);
}

void loop(){
n_cocho =+ ", ";
n_cocho =+ tag_boi;
n_cocho =+ ", ";
n_cocho =+ peso_cocho;
Serial.print(n_cocho);
}

Quando você define uma variável, você define a área ocupada, a maneira que o processador vai lidar com ela e o tempo de criação dessa variável, isso tudo vai parar dentro de um dicionario de variáveis que o compilador usa para montar o código, os compiladores de dois passos criam isso no primeiro passo e usam para montar o código no segundo, geralmente são mais eficientes e o de um passo tentam fazer isso tudo de uma vez, por exemplo:

uma int tem 8 bits e não usa terminador "\0";
uma string tem tamanho definido pelo usuário e usa um terminador "\0"
e por ai vai,

Se você atribui a uma int um float o que o compilador vai fazer só Deus sabe......

Uma maneira mais elegante de se lidar com isso é através de struct de uma olhada no exemplo abaixo:

#include
#include
using namespace std;

struct data {
int dia;
int mes;
int ano;
};

int main (void){
data hoje;
hoje.dia = 23;
hoje.mes = 9;
hoje.ano = 2008;
cout <<"Hoje e "<<hoje.dia<<"/"<<hoje.mes<<"/"<<hoje.ano<<endl;
system ("pause");
return EXIT_SUCCESS;
}

Veja que a struct é um modelo somente, os dados foram fisicamente criados quanto foi dado o comando data hoje, embora possam ser criados na definição da struct tambem

Edson

LOL

Em C, o separador decimal é um ponto e não uma vírgula...

int n_cocho = 1;
char tag_boi[] = {'1','F','I',4','5','6','6','W','D','3','\0'};
float peso_cocho = 30.45;

void setup(){
Serial.begin(9600);
}

void loop(){

Serial.print(n_cocho, DEC);
Serial.print(" ");
Serial.print(tag_boi);
Serial.print(" ");
Serial.print(peso_cocho, DEC);

//n_cocho =+ ", ";
//n_cocho =+ tag_boi;
//n_cocho =+ ", ";
//n_cocho =+ peso_cocho;
//Serial.print(n_cocho);
}

Se calhar aprender C antes de comecares a mexer com strings será o ideal. :wink:

Obrigado pela dica, em relação ao separador a minha intensão é concatenar a "," para separar os dados para serem impressos todos de uma vez que serão recebidos por outro programa, bom a ideia é essa.
Serial.print(n_cocho); //1, 1FI4566WD3, 30.45

int n_cocho = 1;
char tag_boi[] = {'1','F','I',4','5','6','6','W','D','3','\0'};
float peso_cocho = 30.45;

void setup(){
Serial.begin(9600);
}

void loop(){

Serial.print(n_cocho, DEC);
Serial.print(", ");
Serial.print(tag_boi);
Serial.print(", ");
Serial.print(peso_cocho, DEC);

//n_cocho =+ ", ";
//n_cocho =+ tag_boi;
//n_cocho =+ ", ";
//n_cocho =+ peso_cocho;
//Serial.print(n_cocho);
}

Simples, yes?

pode dar uma olhada na documentação do operador de soma para strings

http://arduino.cc/en/Reference/String

:slight_smile: