- #?include?<stdio.h>??
- #?include?<stdlib.h>??
- ??
- #?define?MAXSTR?200??
- #?define?REBOT?"小C說:?"??
- #?define?YOUR?"您?說:?"??
- #?define?EXIT?"-e\n"??
- #?define?NOREPLY?"我不知道你說什么呢!\n"??
- ??
- char?*GetRebot(char?*str,?char?*reply);?//處理接收的對話內容,返回機器人回復內容??
- void?DelHr(char?*str);?//刪除獲取到的字符串中的換行??
- void?RobotSay(char?*str);?//機器人回復??
- ??
- int?main(void)??
- {??
- ????char?str[1024];??
- ????char?reply[600];??
- ????printf("**************************聊天機器人****************************\n");??
- ????printf("\n%sHI,我是聊天機器人小C,很高心和您認識^?^?退出聊天請輸入-e\n",REBOT);??
- ??
- ????do??
- ????{??
- ????????printf("%s",YOUR);??
- ????????scanf("%s",str);??
- ????????printf("%s",REBOT);??
- ??????????
- ????????if?(str[0]?!=?'-'?&&?str[1]?!=?'e'?)??
- ????????{??
- ????????????GetRebot(str,?reply);??
- ????????????RobotSay(reply);??
- ????????????printf("\n");??
- ????????}??
- ????????else??
- ????????????printf("和您聊天真實愉快,歡迎下次再來和我聊天~\n");??
- ????}while(str[0]?!=?'-'?&&?str[1]?!=?'e'?);??
- ??
- ????return?0;??
- }??
- ??
- char?*GetRebot(char?*str,?char?*reply)??
- {??
- ????static?char?keywords[500];??
- ????int?i?=?0;??
- ????FILE?*?fp;??
- ??
- ????if(?(fp?=?fopen("reply","r"))?==?NULL)??
- ????{??
- ????????printf("缺少核心文件!!\n");??
- ????????exit(-1);??
- ????}??
- ??
- ????while?(?!feof(fp)?)?//獲取關鍵字??
- ????{??
- ????????i++;??
- ????????fgets(keywords,?500,?fp);??
- ????????DelHr(keywords);??
- ??????
- ????????if(?i?%?2?!=?0)??
- ????????{??
- ????????????if(?strstr(str,?keywords)?!=?0?)??
- ????????????{??
- ????????????????fgets(reply,?500,?fp);??
- ????????????????fclose(fp);??
- ????????????????return?reply;??
- ????????????}??
- ????????}??
- ????}??
- ????fclose(fp);??
- ????return?NOREPLY;??
- }??
- ??
- void?DelHr(char?*str)??
- {??
- ????int?i,j;??
- ??????
- ????for(i=0;?str[i]?!=?'\0';?i++)??
- ????{??
- ????????if(str[i]?==?'\n')??
- ????????{??
- ????????????for(j=i;?str[j]?!=?'\0';?j++)??
- ????????????????str[j]?=?str[j+1];??
- ????????}??
- ????}??
- }??
- ??
- void?RobotSay(char?*str)??
- {??
- ????printf("%s\n",?str);??
- } ?