Auto commit
This commit is contained in:
parent
0c901eeaaa
commit
c57e611d42
36
2207/万维C/2.c
36
2207/万维C/2.c
@ -12,8 +12,38 @@ char* replaceSubstring(const char *str, const char *oldSubstr, const char *newSu
|
|||||||
|
|
||||||
|
|
||||||
/**********Program**********/
|
/**********Program**********/
|
||||||
|
//动态内存分配数组空间
|
||||||
|
result = (char *)malloc(10000);
|
||||||
|
p = result;//将数组首地址赋值给一个指针变量用来操作数组
|
||||||
|
for(i=0;i<strLen;i++){//主串的下标遍历
|
||||||
|
j = 0;//子串的下标遍历
|
||||||
|
//判断当前是否找到和主串中是否和子串开头的字符
|
||||||
|
if(oldSubstr[j] != str[i]){
|
||||||
|
*p++=str[i];//直接存到新字符串
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
while(oldSubstr[j] != '\0' && oldSubstr[j++] == str[i++]);
|
||||||
|
//如果找到和子串相同的元素
|
||||||
|
//则一一比较 一直比较到子串到结束符或者到字符不相等
|
||||||
|
if(oldSubstr[j] == '\0'){
|
||||||
|
//k为主串中子串的起始位置
|
||||||
|
k=0;
|
||||||
|
while(newSubstr[k] != '\0'){
|
||||||
|
*p++ = newSubstr[k++];
|
||||||
|
}
|
||||||
|
i--;
|
||||||
|
}else{//只是前面几个字符匹配 后续并不匹配 则需要从头开始存
|
||||||
|
i-=j;
|
||||||
|
*p++=str[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*p='\0';
|
||||||
|
/*
|
||||||
|
字符串:abcabc
|
||||||
|
需要替换的子串:a
|
||||||
|
替换后的子串:##
|
||||||
|
示例输出:##bc##bc
|
||||||
|
*/
|
||||||
|
|
||||||
/********** End **********/
|
/********** End **********/
|
||||||
|
|
||||||
@ -49,4 +79,4 @@ int main() {
|
|||||||
free(replacedStr);
|
free(replacedStr);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user