codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>





char *replace(char *s, char *pattern, char *substitution)
{
    char *u;
    int i=0, n=0, j=0, x, sw=0, len, len_p, len_s, l;

    u = (char*)malloc(100*sizeof(char));

    len=strlen(s);        
    len_p=strlen(pattern);
    len_s=strlen(substitution)-1;
    l = len - len_p + len_s + 1;
               
    for(i; s[i]!='\0'; i++)
    {
        while(pattern[j]!='\0')
        {
            if((j==0 && s[i-1]!=' ') && (j==0 && s[i-1]!='\0'))
            {
                break;
            }
            else if((pattern[j+1]=='\0' && s[i+1]!=' ') && (pattern[j+1]=='\0' && s[i+1]!='\0'))
            {
                i=i-j;
                for(x=0; x<j; x++,i++) 
                    u[i]=pattern[x];
                j=0;
                sw=0;
                break;
            }
            else if(pattern[j]==s[i])
            {
                u[n]=substitution[j];
                i++;
                j++;
                n++;
                sw=1;
            }
            else
            {
                i=i-j;
                for(x=0; x<j; x++,i++) 
                    u[i]=pattern[x];
                j=0;
                sw=0;
                break;
            }
        }
                     
        if(sw==1)
        {
            sw=2;
            while(len_p <= len_s)
            {
                u[n]=substitution[len_p];
                n++;
                len_p++;
            }
        }
       
        u[n]=s[i];
        n++;
    }
        
    if(sw==2)
    {
        for(i=0; i<l; i++)
            ;
        u[i]='\0';
        printf("PATTERN trovato: ");
    }    
    else
        printf("PATTERN non trovato: ");        
    
    return u;
}





int main()
{
    char s[]="mi piace correre", pattern[30], substitution[30];
    
    printf("mi piace correre\n\n");
    
    printf("Sostituisci: ");
    scanf("%s", pattern);
    printf("Con: ");
    scanf("%s", substitution);
    
    printf("%s\n", replace(s, pattern, substitution));
   
    system("PAUSE");
    return 0;
}
N.B.
funziona soltanto con pattern assoluti:
"PIACE" == "PIACE", (non trova ne "PIA" ne "CE")
in più permette di inserire stringhe di "qualsiasi" dimensione.