2010-12-28 3 views
0

Я хочу сделать программу, которая регистрирует несколько идентификаторов в разных протоколах, получает сообщения и дает ответы на разные сообщения (команды).Полученное сообщение im-msg

пример:

меня: кто
бот: Я на 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: кто.

У вас есть идеи, почему это происходит? Что я сделал не так?

Спасибо и извините за мой плохой английский.

ответ

2

Вы должны использовать strcmp функцию:

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

== проверяет, что указатели держат тот же адрес, который не то, что вы хотите.

+1

Это работает. Большое спасибо! –

 Смежные вопросы

  • Нет связанных вопросов^_^