Skip to content

Instantly share code, notes, and snippets.

@silv3rm00n
Created December 22, 2011 12:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save silv3rm00n/1510151 to your computer and use it in GitHub Desktop.
Save silv3rm00n/1510151 to your computer and use it in GitHub Desktop.
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char *str_replace(char *search , char *replace , char *subject);
int main()
{
char *a = "http://www.google.com.www.abcd.com.www.sadasdasd.www.";
char *c = str_replace("http://" , "" , a);
c = str_replace("www." , "REPLACEMENT" , c);
puts(c);
return 0;
}
/*
* Search and replace a string with another string , in a string
* */
char *str_replace(char *search , char *replace , char *subject_orig)
{
char *subject , *buffer = NULL , *p;
int size;
subject = strdup(subject_orig);
while( (p = strstr(subject, search)) )
{
size = strlen(subject) + 1 + strlen(replace) - strlen(search);
buffer = (char*) realloc(buffer , size );
if(buffer == NULL)
{
printf("realloc failed");
exit(0);
}
//Copy characters from 'subject' start to 'search' string
strncpy(buffer, subject , p - subject );
buffer[p-subject] = '\0';
sprintf( buffer + (p - subject) , "%s%s" , replace, p + strlen(search));
//Save the new buffer in the subject
subject = (char*) realloc( subject , strlen(buffer) );
strcpy(subject , buffer);
}
free(buffer);
return subject;
}
###########Output
REPLACEMENTgoogle.com.REPLACEMENTabcd.com.REPLACEMENTsadasdasd.REPLACEMENT
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment