Friday, November 2, 2012

Finds a string/character from the source and replaces with the specified replace string or a character


char* function_replace(const char* src,const char* search,const char* replace)
{
   
 size_t size       = strlen(src) + 1;
 size_t searchlen  = strlen(search);
 size_t replacelen = strlen(replace);

 char* value = (char*)malloc(size);

 char* ret = value;
 ret = value;
 if (value != NULL)
    {
 
  for(;;)
  {
 
   const char* match = (char*)strstr(src,search);

   if(match != NULL)
   {
   
    size_t count = match - src;
    char* temp;
    size += replacelen - searchlen;
    temp = (char*)realloc(value,size);

    if(temp == NULL)
    {
     free(value);
    return NULL;
    }
 
    ret = temp + (ret - value);
    value = temp;
    memmove(ret,src,count);
    src += count;
    ret += count;

    memmove(ret,replace,replacelen);

    src += searchlen;
    ret += replacelen;

   }

   else /* No Match found */
   {
   
    strcpy(ret,src);
    break;
   }
  }
 }

 return value;
}
const char* function_find_replace(const char* source,const char* str,const char* repl)
{
 const char* after;
 after = function_replace(source,str,repl);
 lr_output_message("The find string is: '%s' and replace string is '%s'",str,repl);
 if(after != NULL)
 {
  lr_output_message("The string after replacement::> %s",after);
  strcpy(source,after);
   }
 else
 {
  lr_output_message("ERROR: String replace problem");
 }
 strcpy(source,after);

 lr_save_string(after,"afterreplace");
  return after;
}

No comments:

Post a Comment