字符串替换函数strreplace
C语⾔实现⼀个字符串替换函数strreplace(char* str, char* sub, char* rep) ,str为原字符串,sub是待替换的字符串,rep为替换字符串,不得使⽤库函数。
实现代码如下:
#include <stdio.h>
size_t strlen(const char* str)
{
size_t len = 0;
for(len=0; *str; len++, str++);
return len;
}
char* strncpy(char* dst, const char* src, size_t cnt)
{
char *p = NULL;
if(dst == src) {
return dst;
} else if(dst < src) {
p = dst;
while(cnt) {
*p++ = *src++;
cnt--;
}
} else {
p = dst + cnt;
src = src + cnt;字符串replace函数
while(cnt) {
*--p = *--src;
cnt--;
}
}
return dst;
}
char * strreplace(char* str, char* sub, char* rep)
{
size_t sub_len, rep_len;
char *p, *p1, *q;
sub_len = strlen(sub);
rep_len = strlen(rep);
for(p=str; *p != 0; p++) {
for(p1=p, q=sub; *p1==*q && *q; p1++, q++);
if(*q) continue;
if(sub_len != rep_len) {
strncpy(p+rep_len, p+sub_len, strlen(p+sub_len) + 1);
}
strncpy(p, rep, rep_len);
p += rep_len;
}
return str;
}
int main(int argc, char** argv)
{
{
int ret;
char a[100] = "abcdefg, abcdefg, abcdefg";
char b[] = "bcd";
char c[] = "12345678";
printf("before: %s\n", a);
printf("after : %s\n", strreplace(a, b, c));
return ret;
}
注意考虑以下情况:
sub长度 > rep长度
sub长度 < rep长度

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。