資源描述:
《發(fā)呆機(jī)器人-可以按模式聊天.doc》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。
1、發(fā)呆機(jī)器人-可以按模式聊天/*****************************說明******************************這個程序是在ylsdd的防止發(fā)呆的程序的基礎(chǔ)上改的.?*****主要功能:?*****防止發(fā)呆,過一段時間會發(fā)出一個Ctl+L;?*****能按給定的模式響應(yīng)聊天信息;?*****可以自動回msg;?*****把整個上bbs過程寫在bbs.log里?*****使用方法:?*****把fd.c和bbs.rule放在同一目錄下.?*****gcc?-o?fd?fd.c?****
2、*fd?*****程序是缺省連smth的,如果用于其它bbs要做改動.請看相關(guān)注釋行.?*****bbs.rule的定義方法是每行一個規(guī)則.?*****&表示空格..是匹配任何字符串的通配符,0,1,2,3,4用來存放匹配的子串.?*****例如:?*****==>.&把&++&踢的死去活來?/a&一運(yùn)氣,0的腿就折了?*****這句話就是定義了,當(dāng)有人對聊天id為++的作如下動作:?*****==>rika?把?++?踢的死去活來?*****那么就返回"/a?一運(yùn)氣,rika的腿就折了"?*****"==>"是smth
3、上用的聊天提示符,若用于別的bbs請按實(shí)際情形改動.?******************************說明結(jié)束********************///fd.c?#include??#include??#include??#include??#include??#include??#include??#include??struct?t
4、ermios?tsave;?int?match2(char?*mod,char?*set,char?*answer)?{??int?i,j,k,c,sign;??char?ar[5][50];??c=0;??j=0;k=0;??sign=0;??for(i=0;mod[i];i++)if(mod[i]=='&')mod[i]='?';??i=0;??while(mod[i])??{???if(mod[i]!='.')???{?????if(mod[i]!=set[j])return?0;?????i++;j++;???}
5、???else???{????for(k=j+1;set[k];k++)????{?????if(mod[i+1]==set[k]&&(mod[i+2]==set[k+1]
6、
7、set[k]>0))?????{???????i+=2;???????strncpy(ar[c],set+j,k-j);???????ar[c][k-j]=0;???????j=k+1;???????c++;???????break;?????}????}????if(!set[k])return?0;???}??}??j=0;??for(i=0;
8、answer[i];i++)??{???if(answer[i]>='0'&&answer[i]<'5')????for(k=0;ar[answer[i]-'0'][k];k++)set[j++]=ar[answer[i]-'0'][k];???else???{????if(answer[i]=='&')set[j++]='?';????else?set[j++]=answer[i];???}??}??set[j]=0;??return?1;?}?int?match(char?*buf,int?*l)?{??char?m
9、od[1024],answer[1024];??FILE?*rulefile;??int?i;??for(i=0;buf[i];i++)if(buf[i]==7)??{???strcpy(buf,"r對不起,現(xiàn)在我不在,若有事請給我寫信!");??//可以換成你自己要回的信息.???*l=strlen(buf);???buf[*l]=13;???return?1;??}??rulefile=fopen("bbs.rule","r");??while(fscanf(rulefile,"%s?%s",mod,answe
10、r)==2)??{???if(match2(mod,buf,answer))???{????*l=strlen(buf);????buf[*l]=13;????fclose(rulefile);????return?1;???}??}??fclose(rulefile);??return?0;?}?void?scan