Transformar inteiro em string

Pq não consigo transformar o integer em string, onde estou errando devo usar itoa?

int Value1 = 21125; //TODA VARIAVEL RECEBIDA PELA SERIAL TEM O FORMATO 21xxx ONDE xxx VARIA DE 0 A 360 EU PRECISO EXTRAIR ESTE VALOR
sprintf(Value1, "%i", Value); //TRANSFORMA EM STRING
String1 = Value1.substring(2,5); //EXTRAI O VALOR 125 DO INTEIRO IGNORANDO O VALOR 21

error: request for member 'substring' in 'Value1', which is of non-class type 'int'

=(

Eu gosto mais de resolver isso assim:

char resultado[6];
int value1 = 21125; 

int angle = Value1%21000; //isto dá 125. 
itoa(angle, resultado, 10);

O teu erro é este:

char Value[6];
...
sprintf(Value, "%i", Value1); // primeiro colocas o array de chars, e colocas o integer depois do formato que queres imprimir.

Obrigado, estou agora na sala de espera pra fazer um tomografia pois ontem a noite na frente do computador tive um reset (ctrl+alt+del) do meu cerebro, apaguei por um segundo mais ou menos, quando chegar em casa irei testar!

:slight_smile:

Funcionou, mas na realidade deveriá ser assim:
recebo duas variaveis pela serial, uma começa com 21 e mais tres números que vao de 000 ate 360
e a outra começa com 17 e mais dois numeros que vao de 00 a 90 no seguinte formato:17234 2145 17233 2146 17232 2147......
preciso saber pra qual motor enviar estes numero, pois o 21 indica que devo enviar os proximos tres numero pro motor 1
e o 17 indica que devo enviar os próximos dois números para o motor 2
como são números inteiros, pensei em transformar em string pra "pegar" o começo de cada valor e comparar, aí sobra o resto que transformo
de volta pra integer e mando ora pro motor 1 ou para o motor 2.
Alguma idéia?
Obrigado pelo interesse!

:frowning:

não dá para uniformizar os valores que recebes? :S

Nao dá, vem de um programa que nao tenho controle, so leio a serial.
mas pensei o seguinte, acho que vou usar o ascii que vem pela serial, acho que vai ficar mais facil
sempre que vier um 13 é pq mudou, ai fico olhando o proximo char se for 65 significa que vem mais tres ascii e devem ir pro motor um
se for 69 virá mais dois ascii e devem ir pro motor 2, aí é transformar os ascii em char, concatenar, transformar pra integer
e enviar pro motor.
O que acha?

Daqui a umas horas vejo isso.

Como recebes em ascii, isso vai ser mais simples de implementar. Depois só tens de meter os valores para uma string e converter. :slight_smile: ou então, converter logo mal recebes. Menos memória é usada assim. :slight_smile:

ok, obrigado!