Quote Originally Posted by flp1969 View Post
Maybe a better routine:
Code:
#include <stdio.h>
#include <string.h>

char *strstrdel( char *str, const char *substr )
{
  char *p = strstr( str, substr );

  if ( p )
  {
    char *q = p + strlen( substr );
    memmove( p, q, strlen ( q ) + 1 );
  }

  return str;
}

int main( void )
{
  char strs[][32] = { "abcdef", "defabc", "xabcyz", "" };
  int i;

  for ( i = 0; i < 4; i++ )
  {
    printf( "\"%s\" -> ", strs[i] );
    printf( "\"%s\"\n", strstrdel( strs[i], "abc" ) );
  }
}
That certainly works too, definitely faster than allocating memory, though if you want to replace the sub string then my method is easier to adapt