Delete all Pattern in a String
Lösche alle Vorkommen einer gesuchten Zeichenfolge in einer vorgegebenen Zeichenfolge.
- StrDel.c
//Lösche alle! Vorkommen eines Strings in einem vorgegeben String
// rekursive Lösung / richard@borwinius.de 2011
// strdel.exe meinTestStringTestblaTestdoedel Test
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//----------------------------------------------------
char *StrDel(char *str,char *pat)
{
register unsigned int lenpat,lenptr,lenstr,i=0;
char *ret = 0;
char *ptr = 0;
ptr = strstr(str, pat);
if (ptr == NULL)
{
free(ret);
free(ptr);
return (char*)str;
}
else
{ lenstr = strlen(str);
lenpat = strlen(pat);
lenptr = strlen(ptr);
ret = (char*) calloc((lenstr+1),sizeof(char));
for (i=0;i<lenstr-lenptr;i++)
{
ret[i] = str[i];
}
ptr+=lenpat;
strcat(ret,ptr);
ret = StrDel(ret,pat); //Rekursion
return ret;
}
free(ptr);
return ret;
}
//----------------------------------------------------
int main(int argc, char *argv[])
{
char *back = 0;
if (argc != 3) {
printf("usage: strdel MeinTestStringTestxy Test");
}
else {
back = StrDel(argv[1],argv[2]);
printf("back %s\n",back);
}
return 0;
}
//----------------------------------------------------