从字符串中找出你想要的内容(字符串匹配)

 在网络协议的实际运用中 我们经常会遇到抓取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;
}

 

posted on 2014-02-24 22:39  IronMan_  阅读(831)  评论(0编辑  收藏  举报