N.B.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; }
funziona soltanto con pattern assoluti:
"PIACE" == "PIACE", (non trova ne "PIA" ne "CE")
in più permette di inserire stringhe di "qualsiasi" dimensione.