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"} 展开
在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"} 展开
2个回答
展开全部
#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;
}
#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;
}
展开全部
#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 ;
}
#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 ;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询