删除字符串指针中的特定字符
今天写代码时遇到了这样的问题:需要删除字符串指针中的特定字符。
思考良久,写了一个demo,调试一番后勉强可以使用。
直接上代码。
void Delete_Character(char *pStr, char chr)
{
char *p = pStr;
while (*pStr != '\0')
{
if (*pStr != chr)
{
*p++ = *pStr;
}
pStr++;
}
*p = '\0';
}
稍加解释一下:
这个方法是删除字符串中所有chr的字符。
需要注意的点:
① char *p = pStr,局部指针变量p指向pStr指向的内存,也就是说两个指针变量指向了同一块内存地址。
内存中映射如下(忽略大小端以及栈的增长顺序)

② 参数pStr也是局部变量,存储在栈上。
不管函数参数是普通变量还是指针变量,当函数退出后,这个变量都会回收,这是由于栈特性决定的。(地址传递和值传递在本质上是一样的)
③ 计算完的字符串后一定要记得加 ‘\0’
4069

被折叠的 条评论
为什么被折叠?



