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

 在网络协议的实际运用中 我们经常会遇到抓取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&[email protected]&tsmmwt=我就读的第一所学校名称?&tsmmda=土豆&checkCode=8496";

    if(0==FindKeyword(start,end,sour))

    {

        printf("success\n");

    }

    return 0;

}

 

你可能感兴趣的:(字符串)