質問

異なるプロトコルでいくつかのIDでログに記録し、メッセージを受信し、異なるメッセージ(コマンド)への回答を提供するプログラムを作成したいと思います。

例:

自分:
ボット: 私は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:who.

なぜこのことが起こるのかという考えはありますか?私は何が間違っていましたか?

ありがとう、そして私の悪い英語をごめんなさい。

役に立ちましたか?

解決

使用する必要があります strcmp 働き:

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

== ポインターが同じアドレスを保持していることを確認しますが、これはあなたが望むものではありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top