C语言如何从字符串数组中找到一个特定的字符串并用一个新的字符串进行替换,要有例程。

比如:有c[]="33.3"d[]="44.4"在xeb[]={"b221.html?a1=11.1&a2=22.2&a3=0"}中找到a1=和a2=,然后替换a1=11... 比如:有c[]="33.3"d[]="44.4"
在xeb[]={"b221.html?a1=11.1&a2=22.2&a3=0"}中找到a1=和a2=,
然后替换a1=11.1字内容为c[]的中内容产生a1="33.3",替换a2=22.2字内容为d[]的中内容产生a2="44.4",
最后得到xeb[]={"b221.html?a1=33.3&a2=44.4&a3=0"}
展开
 我来答
未及细想
2012-06-09 · 超过29用户采纳过TA的回答
知道答主
回答量:52
采纳率:0%
帮助的人:71万
展开全部
#include <stdio.h>
#include <string.h>
/*要用100个1字符来替换11.1,那么xeb[]不一定还能装得下;何况还有d[100000],那里面可不一定是44.4哦.
被替换的的字符串是以&来结尾吗?a1=,a2=这些字符串唯一吗?或者默认11.1与33.3串长度是相同的吗?
看起来是的,但代码必须知道.所以这些问题只能自己解决,因为别人很难清楚你的本意*/
int main()
{
char c[]="33.3",d[]="44.4";
char xeb[]="b221.html?a1=11.1&a2=22.2&a3=0";
printf("初始:%s\n",xeb);
char *pa="a1",*index=strstr(xeb,pa);
if(index)
{
index+=3;
for(int n=0;n<strlen(c);n++) *(index+n)=c[n];
}
pa="a2",index=strstr(xeb,pa);
if(index)
{
index+=3;
for(int n=0;n<strlen(d);n++) *(index+n)=d[n];
}
/*检查结果*/
printf("结果:%s\n",xeb);
return 0;
}
20081050146
2012-06-12 · 超过18用户采纳过TA的回答
知道答主
回答量:44
采纳率:0%
帮助的人:41.2万
展开全部
#include <stdio.h>
#include <string.h>

//在orginal_str字符串中,找到dest字符串,
//然后将它后面的字符串替换为src
void replace(char *orig_str, const char *dest, const char*src)
{
char *right_ptr = NULL ;
size_t dest_len = 0 ;
size_t src_len = 0 ;
if( NULL == (right_ptr = strstr(orig_str,dest)) )
{
printf("can not find \"%s\" in \"%s\"\n", dest, orig_str) ;
return ;
}

dest_len = strlen(dest) ;
right_ptr += dest_len ;

src_len = strlen(src) ;
strncpy(right_ptr,src,src_len) ;
}
int main()
{
char xeb[] = "b221.html?a1=11.1&a2=22.2&a3=0" ;
char c[] = "33.3" ;
char d[] = "44.4" ;

replace(xeb,"a1=",c);
replace(xeb,"a2=",d);

printf("after replace,xeb:%s\n",xeb) ;

return 0 ;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式