c语言实现字符串过滤,C语言实现字符串的处理

该博客详细介绍了如何在C语言中实现字符串的替换和删除操作。通过使用指针和内存管理,作者提供了一个名为`strReplace`的函数,该函数接受原始字符串、待替换或删除的子字符串以及替换字符串作为参数。当子字符串为空时,函数会直接复制原始字符串。如果找到子字符串,它将被替换或删除,并返回新的字符串。在实际应用中,需要注意释放内存以避免内存泄漏。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.  替换或删除字符串中的子字符串

字符串的删除很简单,用后面的数据替代前面的数据就实现了;但是,替换字符串缺比较复杂。我们需要通过指针实现字符串的查找,最后插入新的字符串。

函数参数说明:

string - 原始字符串;

substr - 子字符串,既需要被替换或者删除的字符串;

replacement - 替换的字符串,即用于代替子字符串的,如果此值为空,则直接删除子字符串。

/**************************************************************************************

* FunctionName : strReplace()

* Description : 字符串替换

* EntryParameter : None

* ReturnValue : None

**************************************************************************************/

char *strReplace(const char *string, const char *substr, const char *replacement)

{

char *tok = NULL;

char *newstr = NULL;

char *oldstr = NULL;

/* if either substr is NULL, duplicate string a let caller handle it */

if (substr == NULL)

{

return strdup(string); //

}

newstr = strdup(string);

while ((tok = strstr(newstr, substr)))

{

oldstr = newstr;

newstr = malloc(strlen(oldstr) - strlen(substr) + strlen(replacement) + 1);

/*failed to alloc mem, free old string and return NULL */

if (newstr == NULL)

{

free(oldstr);

return NULL;

}

memcpy(newstr, oldstr, tok - oldstr);

memcpy(newstr + (tok - oldstr), replacement, strlen(replacement));

memcpy(newstr + (tok - oldstr) + strlen(replacement), tok + strlen(substr), strlen(oldstr) - strlen(substr) - (tok - oldstr));

memset(newstr + strlen(oldstr) - strlen(substr) + strlen(replacement) , 0, 1);

free(oldstr);

}

return newstr;

}使用实例:

char *pnt;

pnt = strReplace(tmpBuf, tmpDat, tmpNew); // 字符串替换

memset(tmpBuf, ' ', sizeof(tmpBuf));

memcpy(tmpBuf, pnt, strlen(pnt));

free(pnt); // 必须调用指针释放,因为替换函数中调用了内存分配

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值