在网络协议的实际运用中 我们经常会遇到抓取HTTP协议的request中的内容(前后固定规律):
例如搜索引擎发出的请求中包含的关键字,经分析后会发现其规律的所在位置。
以下是从字符串中抠出你想要的关键字内容代码:
有错误的地方请大家指正(gcc中编译运行通过) 谢谢
#include <stdio.h> #include <stdlib.h> #include <string.h> int FindKeyword(char *start,char *end,char *sour) { printf("FindKeyword\n"); if(strstr(sour,end)==NULL||strstr(sour,start)==NULL) { printf("no keyword.\n"); return 0; } while(*sour!='\0') { sleep(1); if(strstr(sour,start)==NULL||strstr(sour,end)==NULL) { break; } char *p=strstr(sour,start); sour = p+strlen(start); char *q=strstr(sour,end); sour = q+strlen(end); printf("circle...\n"); char *p1=p+strlen(start); int i=q-p1; char buffer[128]; buffer[i]='\0'; // printf("%s\n i=%d \n",p1,i); memcpy(buffer,p1,i); printf("username=%s \n",buffer); } return 0; } int main() { char *start="username="; char *end="&"; char* sour="data_id=0458942466&usernameid=21BA3171E464A80C4BEBFBDF452B1F5C29B3037B5AB89C65&pwdid=FEC70EEE5072625FFEC70EEE5072625FFEC70EEE5072625FDDB1E64AA34C986D&zjbhid=FEC70EEE5072625FFEC70EEE5072625FFEC70EEE5072625FFEC70EEE5072625FFEC70EEE5072625F&yhm=&dlmm=&qrdlmm=&zjlx=1&zjbh=&zsxm=王年成&zy=05&csrq=1951-08-01&xb=1&mz=30&jtzz=重庆市城口县大城市&jtzz_first=&jtzz_second=&jtusername=xiaoxiao&zz_third=&jtzz_other=&username=weiyi&txdz=重庆市梁平县重新按市场&txdz_first=&txdz_second=&txdz_third=&txdz_other=&lxdh=15688521315&gzdw=天天电子&yzbm=666666&dzyj=22222222@qq.com&tsmmwt=我就读的第一所学校名称?&tsmmda=土豆&checkCode=8496"; if(0==FindKeyword(start,end,sour)) { printf("success\n"); } return 0; }