#include<stdlib.h>;
#include<stdio.h>;
#include<string.h>;
#pragma warning (disable:4996);
void*my_dele(char*a, char*b)
{
char*p;
int n = strlen(b);
printf("n=%d\n", n);
while (strstr(a, b) != NULL)
{
p = strstr(a, b);
while (*(p + n) != 0)
{
*(p) = *(p + n);
p++;
}
}
printf("%s\n", a);
return;
}
int main()
{
char a[] = "Tomcat is a male ccatat";
char b[] = "cat";
my_dele(a, b);
printf("%s\n", a);
system("pause");
return 0;
}
给改了一下,主要是while(*(p+n)!=0)循环结束后,要加上*p = 0;不然后面的内容还是在的,只是前移而已,要加上字符串终止符才可以。
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#pragma warning (disable:4996);
void* my_dele(char*a, char*b)
{
char*p;
int n = strlen(b);
printf("n=%d\n", n);
while ((p = strstr(a, b)) != NULL)
{
//p = strstr(a, b);
while (*(p + n) != 0)
{
*(p) = *(p + n);
p++;
}
*p = 0;
}
printf("%s\n", a);
return NULL;
}
int main()
{
char a[] = "Tomcat is a male ccatat";
char b[] = "cat";
my_dele(a, b);
printf("%s\n", a);
system("pause");
return 0;
}