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;
}
//----------------------------------------------------