求大神~~十分感谢
这个聊天机器人为什么回答总是乱码# include <iostream>
# include <windows.h>
# include <stdlib.h>
using namespace std;
# define MAXSTR 200
# define REBOT "小C说: "
# define YOUR "您 说: "
# define EXIT "-e\n"
# define NOREPLY "我不知道你说什么呢!\n"
char * GetRebot(char * str); //处理接收的对话内容,返回机器人回复内容
void DelHr(char * str); //删除获取到的字符串中的换行
void RobotSay(char * str); //机器人回复
int main()
{
char str[1024];
cout<<"**************************聊天机器人****************************"<<endl;
cout<<"HI,我是聊天机器人小C,很高心和您认识^ ^ 退出聊天请输入-e\n"<<endl;
do
{
cout<<"YOUR"<<endl;
cin>>string;
cout<<"Robet"<<endl;
if (str[0] != '-' && str[1] != 'e' )
{
RobotSay(GetRebot(str));
cout<<endl;
}else{
cout<<"和您聊天真实愉快,欢迎下次再来和我聊天"<<endl;
}
}while(str[0] != '-' && str[1] != 'e' );
return 0;
}
char * GetRebot(char * str)
{
static char keywords[500];
char reply[500];
int i = 0;
FILE * fp;
if( (fp = fopen("C:\\reply","r")) == NULL)
{
cout<<"缺少核心文件!!"<<endl;
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);
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)
{
int i; for(i=0; str[i] != '\0'; i++)
{
Sleep(80);
cout<<str[i]);
}
}