0

我想制作一个程序,在不同的协议上登录几个 ID,接收消息并给出不同消息(命令)的答案。

例子:

我: who
bot:我是一个 libpurple 驱动的机器人。

代码如下所示:

static void received_im_msg(PurpleAccount *account, char *sender, char *message,
                              PurpleConversation *conv, PurpleMessageFlags 标志)
{
    if (conv==NULL) {
        conv = Purple_conversation_new(PURPLE_CONV_TYPE_IM,帐户,发件人);
    }

    printf("%s: %s\n", sender, message);

    字符 *答案;

    如果(消息==“谁”){
        answer="我是一个 libpurple 驱动的机器人。";
    } else if (message=="hello") {
        answer="你好,我的朋友!";
    } 别的 {
        answer="未知命令。";
    }
    //打印答案,这样我们就可以在终端中看到它:
    printf("bot: %s\n",message);  

    //发送消息:
    Purple_conv_im_send(purple_conversation_get_im_data(conv),answer);
}

对我来说,这段代码看起来还不错,但没有按预期工作。机器人收到的任何消息,答案将始终是未知命令。. 我不明白为什么

消息==“谁”

不是真的,即使

printf("%s: %s\n", sender, message);

打印类似:
example_id_345: who

您知道为什么会发生这种情况吗?我做错了什么?

谢谢你,对不起我的英语不好。

4

1 回答 1

2

您需要使用以下strcmp功能:

if (strcmp(message, "who") == 0) {
    answer="I'm a libpurple powered bot.";
} else if (strcmp(message, "hello") == 0) {

==检查指针是否具有相同的地址,这不是您想要的。

于 2010-12-28T21:40:13.123 回答