c语言 编写一个智能聊天工具

如题所述

可以使用智能聊天机器人的接口来做

下面是一个简单的使用小耗子机器人提供的接口的聊天代码

#include <stdio.h>
#include <string.h>
#include <curl/curl.h>
#include <stdlib.h>

#define BOT_SER "https://brisk.eu.org/smbot/sm.php"

typedef struct
{
    size_t len;
    char *msg;
}MSG;

size_t get_data(char *ptr,size_t size,size_t nmemb,MSG *msg)
{
    msg->msg=realloc(msg->msg,msg->len+nmemb+1);
    snprintf(msg->msg+msg->len,nmemb,"%s",ptr);
    msg->len+=nmemb;

    return nmemb;
}

int main(int argc,char **argv)
{
    CURL *curl;
    MSG msg;
    char buf[1024];
    char data[2048];

    curl=curl_easy_init();
    msg.len=0;
    msg.msg=NULL;

    curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,get_data);
    curl_easy_setopt(curl,CURLOPT_WRITEDATA,&msg);
    curl_easy_setopt(curl,CURLOPT_USERAGENT,"CBot/From Baidu zhidao");

    while(1)
    {
        printf(">");
        scanf("%s",buf);

        if(strcmp(buf,"exit") == 0)
            break;

        snprintf(data,sizeof(data),"%s?msg=%s",BOT_SER,buf);
        curl_easy_setopt(curl,CURLOPT_URL,data);
        curl_easy_perform(curl);

        if(msg.len)
        {
            printf("%s\n",msg.msg);
            msg.len=0;
            free(msg.msg);
            msg.msg=NULL;
        }
    }

    curl_easy_cleanup(curl);

    return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-01-16
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
 
//定义用户名最大长度
#define P 20
//定义密码最大长度
#define Q 20
//定义用户最大数量
#define N 100
 
//定义用户属性的结构体
struct user
{
char user_name[P]; //用户名
char user_code[Q]; //密码
int friend_num; //好友数量
int user_friend[N]; //好友名单
};
 
void main()
{
int p = 0; //操作步骤
int n = 0; //用户数量
int i = 0; //过程操作数
int j = 0; //过程操作数
int log_id; //合格登陆号码
char log_name[P]; //用户名临时存储
char log_code[Q]; //密码临时存储
user my_user[N]; //定义用户
while(1)
{
switch(p)
{
case 0: //注册登陆选择界面
printf("请选择功能:\n");
printf("1.登陆\n");
printf("2.注册\n");
scanf("%d",&i); //过程数i记录接收数据
if(i ==1 || i == 2)
{
p = i;
}
else
{
printf("输入错误!\n");
p = 0;
}
i = 0; //过程数i清零
break;
case 1: //登陆界面
printf("请输入用户名:\n");
scanf("%s", &log_name);
printf("请输入密码:\n");
scanf("%s", &log_code);
for(i=0;i<n;i++) //验证登陆用户,过程数i作为循环变量
{
if(strcmp(my_user[i].user_name, log_name) == 0) //验证用户名
{
if(strcmp(my_user[i].user_code, log_code) == 0) //验证密码
{
printf("登陆成功!\n");
log_id = i; //记录合格登陆号码
p = 3;
j = 1; //过程数j作为操作步骤变化标识
}
else
{
printf("密码错误!\n");
p = 1;
j = 1;
}
}
}
i = 0; //过程数i清零
j = 0; //过程数j清零
break;
case 2: //注册界面
printf("请输入用户名:\n");
scanf("%s", &log_name);
printf("请输入密码:\n");
scanf("%s", &log_code);
strcpy(my_user[n].user_name, log_name); //保存用户名
strcpy(my_user[n].user_code, log_code); //保存密码
n++; //记录注册用户数
printf("注册成功!\n");
p = 0;
break;
case 3: //用户界面
printf("当前登陆用户:%s\n", my_user[log_id].user_name);
printf("请选择其他操作:\n");
printf("1.显示好友名单\n");
printf("2.增加好友\n");
printf("3.删除好友\n");
printf("4.好友分组\n");
printf("5.自选功能\n");
printf("6.登出\n");
scanf("%d",&i); //过程数i记录接收数据
if(i >=1 && i <= 6)
{
p = i+3;
}
else
{
printf("输入错误!\n");
p = 3;
}
i = 0; //过程数i清零
break;
case 4: //显示好友名单
printf("好友名单:\n");
for(i=0;i<my_user[log_id].friend_num;i++)
{
j = my_user[log_id].user_friend[i]; //过程数j记录用户好友号码
printf("%s\n", my_user[j].user_name);
}

p = 3;
i = 0;
j = 0;
break;
case 5: //增加好友,未实现
p = 3;
break;
case 6: //删除好友,未实现
p = 3;
break;
case 7: //好友分组,未实现
p = 3;
break;
case 8: //自选功能,未实现
p = 3;
break;
case 9: //登出
for(i=0;i<20;i++)
{
log_name[i] = 0; //清除用户名临时存储
log_code[i] = 0; //清除密码临时存储
}
p = 0; //返回初始页面
i = 0; //过程数i清零
break;
default:
p = 0;
break;
}
}
}

本回答被提问者采纳
第2个回答  2015-06-21

追问

滚滚滚滚滚啊滚,滚滚长江水啊,滚滚红尘滚滚红尘客栈,,,

相似回答