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.