Go Down

Topic: Transformar inteiro em string (Read 2422 times) previous topic - next topic

Kotch

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'

=(
????????????????????

bubulindo

Eu gosto mais de resolver isso assim:
Code: [Select]

char resultado[6];
int value1 = 21125;

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


O teu erro é este:

Code: [Select]

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

Kotch

#2
Jun 20, 2012, 04:16 pm Last Edit: Jun 20, 2012, 11:07 pm by Kotch Reason: 1
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!

:-)

????????????????????

Kotch

#3
Jun 20, 2012, 10:45 pm Last Edit: Jun 20, 2012, 11:07 pm by Kotch Reason: 1
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!

:(
????????????????????

bubulindo

não dá para uniformizar os valores que recebes? :S
This... is a hobby.

Kotch

#5
Jun 20, 2012, 11:50 pm Last Edit: Jun 20, 2012, 11:52 pm by Kotch Reason: 1
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?

8)
????????????????????

bubulindo

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. :) ou então, converter logo mal recebes. Menos memória é usada assim. :)
This... is a hobby.

Kotch

????????????????????

Go Up