当前位置: 技术问答>linux和unix
如何在一个字符串中分离出需要的部分
来源: 互联网 发布时间:2015-04-25
本文导语: 进行协议分析的时候,得到http请求的报头 GET /somedir/page.html http/1.1 host:www.someschool.edu connection:close user-agent:Mozilla/4.0 .... 请教大虾如何从这个字符串里面得到url,就是要得到www.someschool.edu/somedir/page.html这个字符串 小弟对...
进行协议分析的时候,得到http请求的报头
GET /somedir/page.html http/1.1
host:www.someschool.edu
connection:close
user-agent:Mozilla/4.0
....
请教大虾如何从这个字符串里面得到url,就是要得到www.someschool.edu/somedir/page.html这个字符串
小弟对字符串的操作很烂,希望各位帮帮忙
GET /somedir/page.html http/1.1
host:www.someschool.edu
connection:close
user-agent:Mozilla/4.0
....
请教大虾如何从这个字符串里面得到url,就是要得到www.someschool.edu/somedir/page.html这个字符串
小弟对字符串的操作很烂,希望各位帮帮忙
|
这里有一段代码 目的将一个字符串如"I+love linux+gnu c",按加号分别取I, love linux,gunc.或许可以供你参考下。
*******************************************
char *ptr=lac_phrase;
while((pos=strstr(ptr,"+"))!=NULL){
*pos='';
strcpy(lac_sub,ptr);
Filter_Phrase(&lst_Result,lac_sub);
ptr=pos+1;
}
strcpy(lac_sub,ptr);
Filter_Phrase(&lst_Result,lac_sub);
*******************************************
lac_phrase[]存放原始字符串,lac_sub存放处理后字符串,希望对你有帮助拉。
*******************************************
char *ptr=lac_phrase;
while((pos=strstr(ptr,"+"))!=NULL){
*pos='';
strcpy(lac_sub,ptr);
Filter_Phrase(&lst_Result,lac_sub);
ptr=pos+1;
}
strcpy(lac_sub,ptr);
Filter_Phrase(&lst_Result,lac_sub);
*******************************************
lac_phrase[]存放原始字符串,lac_sub存放处理后字符串,希望对你有帮助拉。
|
分为两个部分,找www.someschool.edu和找somedir/page.html,原理一样,举其中一个:
第一步:模式匹配,找到GET,可以使用现在有的算法KMP,数据结构讲了好多;
第二步:从其后第一个非空格的字符开始,直到出现空格字符为止的字符取下来。
同理,找到connection后的部分……
把两个部分连接起来,注意中间有一个'/'千万不要多了或者少了。
第一步:模式匹配,找到GET,可以使用现在有的算法KMP,数据结构讲了好多;
第二步:从其后第一个非空格的字符开始,直到出现空格字符为止的字符取下来。
同理,找到connection后的部分……
把两个部分连接起来,注意中间有一个'/'千万不要多了或者少了。