> char result[strlen(string)];
> char buf[strlen(string)];
> res = (char*)calloc (strlen(string),sizeof(char*));
следует добавить еще по байтику - нулевой символ
> if (strlen(string)<1)
> return res;
проверку на длину лучше сделать перед выделением памяти для буфера и результата.
Вот как я бы сделал:
#include <string.h>
#include <stdio.h>
char* strrem (char *string, char *sub)
{
int sublen = strlen(sub);
char *found, *buffer = NULL;
if ( (found=strstr(string,sub))!=NULL)
{
buffer = (char *)malloc(strlen(string)+1)
strncpy(buffer,string,(int)(found-string));
strcat(buffer,found+sublen);
}
return buffer;
}
int main(int argc, char **argv)
{
printf("\n%s\n",strrem("blabla","ab"));
return 0;
}