我想创建一个程序,在不同的协议上记录几个ID,接收消息并给出不同消息(命令)的答案。
示例:
我:谁 bot:我是一个libpurple动力机器人。
代码如下所示:
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); }
对我来说,这段代码看起来还不行,但是没有按预期工作。机器人收到的任何消息,答案将始终是未知命令。。
我无法理解message == "who"
不是,即使
printf("%s: %s\n", sender, message);
打印如下:
example_id_345:谁。
你知道为什么会发生这件事吗?我做错了什么?
谢谢你,抱歉我的英语不好。
答案 0 :(得分:2)
您需要使用strcmp
功能:
if (strcmp(message, "who") == 0) {
answer="I'm a libpurple powered bot.";
} else if (strcmp(message, "hello") == 0) {
==
检查指针是否保持相同的地址,这不是您想要的。