collapse

* Posts Recentes

Bibliotecas para arduino e drivers de stepper - o problema da 'distracção' por SerraCabo
[Hoje às 02:12]


Zener BZW04-105? por brunus
[11 de Dezembro de 2018, 17:34]


Artigo 11, 13 e os restantes por jm_araujo
[10 de Dezembro de 2018, 11:05]


Compra Colectiva Mouser N3-2018 (limite 25 Nov) por Hugu
[10 de Dezembro de 2018, 01:07]


Ajuda para reparar Luzes de LED de Natal por brunus
[09 de Dezembro de 2018, 00:59]


Como reproteger as pontas de cobre do ferros de soldar? por brunus
[09 de Dezembro de 2018, 00:12]


Usar steppers de 5 pontas como se fossem de 4 pontas por SerraCabo
[08 de Dezembro de 2018, 21:18]


LusoRobótica - Website - Estado actual por Tech_JA
[06 de Dezembro de 2018, 09:18]


Como transformar um mosquito killer de tomada em um portátil? por brunus
[05 de Dezembro de 2018, 23:28]


LR, passado, presente e futuro por iyahdub
[05 de Dezembro de 2018, 04:16]

Autor Tópico: Função " lastIndexOf ()"  (Lida 1594 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline joaopedrocmp

  • Mini Robot
  • *
  • Mensagens: 246
Função " lastIndexOf ()"
« em: 09 de Abril de 2013, 01:14 »
Boas,

estou a tentar igualar uma função aos ultimos 12 caractees desta string : 00110000910000FF06E8329BFDBE03, ou seja, queria apenas ficar com "E8329BFDBE03".

Será o Lastindexoff, a melhor maneira?

Obrigado

Offline pmj_pedro

  • Mini Robot
  • *
  • Mensagens: 328
Re: Função " lastIndexOf ()"
« Responder #1 em: 09 de Abril de 2013, 02:38 »
Boas,

estou a tentar igualar uma função aos ultimos 12 caractees desta string : 00110000910000FF06E8329BFDBE03, ou seja, queria apenas ficar com "E8329BFDBE03".

Será o Lastindexoff, a melhor maneira?

Obrigado

isso é java ou C

Se for C, podes fazer uma copia dos indices de 12 a 0

Se for Java, era converteres isso para um array de char e fazias o msm que em C

Offline display

  • Mini Robot
  • *
  • Mensagens: 6
Re: Função " lastIndexOf ()"
« Responder #2 em: 09 de Abril de 2013, 12:10 »
char[] mensagemrecebida = new char[30];
char[] mensagemFinal = new char[12];
int i=0
int size = 12;
int j = 0;

for(i = mensagemRecebida.lenght-size; i>mensagemrecebida.lenght;i++)
{
       mesagemFinal[j]= mensagemRecebida;
       j++;
}

isso deve ser o que pretendes

By Misato

Offline joaopedrocmp

  • Mini Robot
  • *
  • Mensagens: 246
Re: Função " lastIndexOf ()"
« Responder #3 em: 10 de Abril de 2013, 01:01 »
Obrigado pela resposta,vou experimentar

;)

Offline joaopedrocmp

  • Mini Robot
  • *
  • Mensagens: 246
Re: Função " lastIndexOf ()"
« Responder #4 em: 10 de Abril de 2013, 02:13 »
Nao me estou a entender com isto :S

Offline tarquinio

  • Mini Robot
  • *
  • Mensagens: 529
Re: Função " lastIndexOf ()"
« Responder #5 em: 10 de Abril de 2013, 04:44 »
Boas.
Convinha teres especificado a linguagem... :P
O lastIndexOf não faz sentido usares aqui, serve para procurares a posição de certas coisas numa string. Tu aqui não precisas de ir à procura de nada, queres simplesmente copiar uma parte de uma string para outra.
Quando falas de strings, estás a falar de objectos do tipo String, ou simplesmente arrays de chars?

O código que foi postado pelo display é para arrays de chars, mas tem uns pequenos bugs :P
Se o código for em C, será algo do tipo:
Código: [Seleccione]
char[] mensagemrecebida = new char[30];
char[] mensagemFinal = new char[13];   // aqui eu usaria 13 para poder terminar a string com um 0 (não é obrigatorio)
int i=0
int size = 12;
int j = 0;

// para veres o tamanho da string terás provávelmente de usar a função strlen
for(i = strlen(mensagemRecebida)-size; i<strlen(mensagemRecebida);i++) // aqui era < em vez de >
{
       mesagemFinal[j]= mensagemRecebida[i];  // aqui faltou colocar o [i]
       j++;
}
mesagemFinal[size] = 0;  // coloca o 0 que indica o fim da string

Mas se a idéia é copiar sempre os ultimos 12 caracteres de uma string de 30 caracteres, eu nem usaria este código, faria simplesmente:
Código: [Seleccione]
memcpy(mensagemFinal, mensagemRecebida+18, 13); // 13 = 12 caracteres + terminador
ou
Código: [Seleccione]
strcpy(mensagemFinal, mensagemRecebida+18);  // não é preciso dar o numero, copia tudo até ao fim