Jump to content

strcmp


dario1133

Recommended Posts

olha para os argumentos da função strcmp :

http://pubs.opengroup.org/onlinepubs/009695399/functions/strcmp.html

int strcmp(const char *s1, const char *s2);

The strcmp() function shall compare the string pointed to by s1 to the string pointed to by s2.

teres buffer[3] não quer dizer os 4 primeiros elementos da string ! quer dizer o elemento na posição 3 da string/lista de caracteres ...

o que pretendes é facilmente realizado com a função strncmp :

http://pubs.opengroup.org/onlinepubs/009695399/functions/strncmp.html

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

  • 2 weeks later...
int message[MAX];
int check[3];

check[0] = 123;
check[1] = 4567;
check[2] = 89012;

if (memcmp(message,               // primeiro bloco de memoria a ser usado na comparacao
          check,                 // segundo bloco de memoria a ser usado na comparacao
          sizeof(int) * 3) == 0) // numero de bytes a serem comparados
{
 // os tres primeiros elemento sao iguais
}

Edited by HappyHippyHippo
IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Quantos, e quais, são os inteiros presentes na tua mensagem de exemplo?

Mensagem:12637608255255255255255255255255

12 inteiros: 1, 2, 6, 37, 60, 82, 552, 5525, 52552, 55255, 255255, e 255???

Edited by pmg

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Link to comment
Share on other sites

Da mensagem (12637608255255255255255255255255), só quero comparar o 126

então afinal estás a receber caracteres alpha numéricos !!!!

não foi isso que disseste !!!

estás a receber inteiros (bytes com o valor numérico) ou caracteres alpha-numéricos representativos dos números ?

inteiros (bytes com o valor numérico)

é óbvio que nunca funcionaria !!!

char message[256]; // buffer com os caracteres da mensagem
char tester[256];

sprintf(tester, "126");
if (memcpy(message, tester, 3) == 0)
{
 // os três primeiros bytes são iguais : '1', '2' e '6'
}
IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

sim, tens razão, sempre se falou do memcmp e escrevi memcpy por distracção.

agora vamos ao que interessa : ou apresentas o código que tens ou nunca terás uma resposta concreta, isto porque ainda não é claro qual é a informação que que estás a processar ...

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Numa aplicação em Java estou a mandar uma mensagem para a porta serie. É uma mensagem de teste e é: 12637608255255255255255255255255.

Num micro-controlador estou a receber essa mensagem (testado). Se começar por 126, vou efectuar determinada acção, que neste momento ainda não desenvolvi, porque não consegui ver se a mensagem começa por 126.

void vSerial() {
   static unsigned char vState = 1;
   static int mensagem;

   switch (vState) {
       case 1:
           if (u8SerialReceivedData()) { //pic recebe do pc (java)
               vState = 2;
               mensagem = getch(); // guarda o que recebe
           }
           break;
       case 2:
           if (... comparar para ver se a mensagem começa por 126) {
               vState = 3;
           } else {
               vState = 1;
           }
           break;
       case 3:
           //Começa por 126, Fazer determinada ação
           vState = 1;
           break;
   }
}
Link to comment
Share on other sites

assim é impossível ...

dizes que envias uma mensagem ("12637608255255255255255255255255") onde não especificas como codificas isso (se é uma lista de inteiros ou uma lista de char's ...

depois apresentas um código onde a mensagem é um simples inteiro ...

é impossível saber que dados estás realmente a enviar e que dados quer processar

visto que deste modo não se vai a lado nenhum, só existe uma solução :

apresenta o código que foi pedido : o que envia os dados !!!

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.