删除全部指定的字符串:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void delString(char *str, char *finstr)
{
char *pstr = strstr(str, finstr);
if (NULL == pstr)
{
printf("没有找到要删除的字符串!");
return;
}
/* 每次从删除后的字符串再查询是否有相应的字符串,如果找到则继续删除 */
/* 这个FOR 效率低,每次都是从开头查询。 */
//for (pstr; pstr != NULL; pstr = strstr(str, finstr))
/* 每次从删除点开始向后查询,这样就可以提高效率,因为前面删除的就不需要再进行查询了 */
/* 只是我们给的这个目标字符串是故意这样设置的,因为删除后又有同样的字符串被组合到了一起 */
for (pstr; pstr != NULL; pstr = strstr(pstr, finstr))
{//保保找到的字符串首地址
char *temp = pstr;
char *ptemp = pstr;
ptemp += strlen(finstr);
while (*temp != '\0')
{
*temp = *ptemp;
temp++;
ptemp++;
}
printf("%s\n", str);
}
}
void main()
{
char str[1024] = "ab123aabbeababcab58ab";
char *p = "ab";
printf("%s\n", str);
delString(str, p);
printf("删除后的字符串:");
printf("%s\n", str);
system("pause");
}