mensaje de señal-im-msg recibido
-
13-10-2019 - |
Pregunta
Quiero hacer un programa que en unos registros de identificadores en diferentes protocolos, recibe los mensajes y se proporcionan respuestas a diferentes mensajes (comandos).
ejemplo:
: que
bot:. Soy un robot accionado libpurple
Los código es el siguiente:
static void received_im_msg(PurpleAccount *account, char *sender, char *message, PurpleConversation *conv, PurpleMessageFlags flags) { if (conv==NULL) { conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, sender); } printf("%s: %s\n", sender, message); char *answer; if (message == "who") { answer="I'm a libpurple powered bot."; } else if (message=="hello") { answer="Hello, my firend!"; } else { answer="Unknown command."; } //print the answer, so we can see it in terminal: printf("bot: %s\n",message); //send the message: purple_conv_im_send(purple_conversation_get_im_data(conv),answer); }
Para mí, este código se ve bien, pero no funciona como se esperaba. Cualquier mensaje que el robot recibe, la respuesta será siempre Comando desconocido. . No puedo entender por qué el
message == "who"
No es cierto, incluso si
printf("%s: %s\n", sender, message);
imprime algo como:
example_id_345:. Que
¿Tiene alguna idea de por qué esto sucede? Lo que hice mal?
Gracias y lo siento por mi mala Inglés.
Solución
Es necesario utilizar el href="http://www.opengroup.org/onlinepubs/009695399/functions/strcmp.html" rel="nofollow"> strcmp
función :
if (strcmp(message, "who") == 0) {
answer="I'm a libpurple powered bot.";
} else if (strcmp(message, "hello") == 0) {
cheques ==
que los punteros tienen la misma dirección, que no es lo que desea.