/培茄*
以下程序可以实现替换字符串中嫌蠢的字符串
*/
#include <stdio.h>
#include <string.h>
char * replace(char *str, char *str1, char *str2, char *strretu)
{
char *str_temp = str
char *str1_temp = str1
char *str2_temp = str2
char *strretu_temp = NULL
unsigned long char_size = (unsigned long)sizeof(char)
/*计算字符长度*/
unsigned long i,j,rep_acc = 0
unsigned long str_len = strlen(str)
unsigned long str1_len = strlen(str1)
unsigned long str2_len = strlen(str2)
/*首先找出Str里有几个地方要被替换的*/
for(str_temp - str <str_len)
{
for(i = 0i <str1_leni++)
{
if(*str_temp++ != *str1_temp++)
{
str1_temp = str1
break
}
else
{
if(i == str1_len - 1)
{
str1_temp = str1
rep_acc++
}
}
}
}
str1_temp = str1
str_temp = str
/*分配所需内存*/
strretu = strretu_temp = malloc(((str_len - str1_len * rep_acc) + str2_len * rep_acc + 1) * char_size)
/*替换*/
for(str_temp - str <str_len)
{
for(i = 0i <str1_leni++)
{
*strretu_temp++ = *str_temp
if(*str_temp++ != *str1_temp++)
{
str1_temp = str1
break
}
else
{
if(i == str1_len - 1)
{
strretu_temp = strretu_temp - str1_len
for(i = 0i <str2_leni++)
{
*strretu_temp++ = *str2_temp++
}
str2_temp = str2
str1_temp = str1
}
}
}
}
*strretu_temp = '\0'
str1_temp = str1
str_temp = str
str2_temp = str2
return(strretu)
}
int main(void)
{
/*
char *str = "asdf123asdf123aa"
char *str1 = "123"配者察
char *str2 = "999"
char *str = "eeeeee1245eeeeeeeeee1245eeeeeeeeeeeee1245eeeeeeeeeeee1245eeeeeeeeeeeee"
char *str1 = "1245"
char *str2 = "ffffffff"
*/
char *str = "fffffff0fffffff1fffffff2fffffff3fffffff4fffffff5fffffff6fffffff7fffffff8fffffff9"
char *str1 = "fffffff"
char *str2 = "月梦"
char *strretu = NULL
printf("str = %s\n", str)
printf("str1= %s\n", str1)
printf("str2= %s\n", str2)
strretu = replace(str, str1, str2, strretu)
printf("strretu = %s\n", strretu)
getch()
free(strretu)
return 0
}
请您确认调用replace方法时,地址栏路径是否正确,replace方法只能搜岩族作用于通过世弊wx.navigateTo或wx.redirectTo打开的页面,而不能作用于wx.navigateBack打开枣顷的页面。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)