c语言如何匹配字符串的问题

假设我我有一个字符流charbuf[1024]="adfafasdfasdfhref="/tmp/a"ad234adfadfadsherf="/tmp/b"234asdf... 假设我我有一个字符流
char buf[1024] = "adfafasdfasdf href="/tmp/a" ad234 adf adf ads herf="/tmp/b" 234asdfkljaldkf herf="/tmp/c" " 我想匹配得到href的的并存放到字符串变量当中,希望高手解疑!!!,谢谢啊
展开
 我来答
帐号已注销
推荐于2016-10-10 · TA获得超过527个赞
知道小有建树答主
回答量:307
采纳率:0%
帮助的人:174万
展开全部
奇怪,怎么换不了行?
你后面两个href打错了,是要取出href=后面引号所包含的内容,即:
/tmp/a
/tmp/b
/tmp/c
这3个内容。
代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main( int argc, char* argv[] )
{
char buf[1024] = "adfafasdfasdf href=\"/tmp/a\" ad234 adf adf ads href=\"/tmp/b\" 234asdfkljaldkf href=\"/tmp/c\" " ;
const char tok[] = "href=";
char *p = buf;
char *tmp = strstr(p, tok); // 查找字符串href=
char *c1, *c2;
while( tmp != NULL )
{
c1 = strchr( tmp, '"' ); // 查找href后的第1个引号
if( c1 != NULL ) c2 = strchr( c1 + 1, '"' ); // 查找href后的第2个引号
if( c1 != NULL && c2 != NULL )
{
char *href = (char*)calloc( c2 - c1 + 1, sizeof(char) ); // 动态分配内存
strncpy( href, c1 + 1, c2 - c1 - 1 ); // 在此处取出href
printf( "href: %s\n", href ); // 输出href
free( href ); // 释放内存
}
p = p + ( tmp - p + 1 ) ;
tmp = strstr( p, tok ); // 查找下一个href=
}
return 0;
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tattackor
2015-10-29 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:938万
展开全部
1、strstr函数即可实现字符串匹配。
2、函数原型:
char * strstr ( const char *, const char * );
a字符串里 查看是否有b字符串,
有则 从首次发现b字符串处 返回 a字符串。
没有则输出 null
例子:
char st[]="abc 1234 xyz";
printf("%s",strstr(st,"34") );
打印出:
34 xyz
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
董0间
2015-10-14 · 超过18用户采纳过TA的回答
知道答主
回答量:73
采纳率:100%
帮助的人:35.6万
展开全部
可以使用strcmp函数匹配两个字符串,也可以用strstr函数在前一个字符串中查找后字符串包含的字符串
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
羲和CC
2012-06-29 · 超过10用户采纳过TA的回答
知道答主
回答量:25
采纳率:0%
帮助的人:27.7万
展开全部
if(buf[i])=='h'&&buf[i+1]=='r'&&buf[i+2}=='e'&&buf[i+3]=='f')
{
//操作
}
亲,你要存什么,不清楚啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Joylae
2012-06-28 · TA获得超过178个赞
知道小有建树答主
回答量:176
采纳率:0%
帮助的人:134万
展开全部
最简单的办法,使用正则表达式。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式