#include #include #define NUM 10 typedef enum bool {FALSE,TRUE} bool; char* sottostringa(char* p, char* s) { char* pp=p; char* ss=s; char* nn=s; while (ss!='\0') { if (*pp=='\0') return nn; if (*pp!=*ss) { nn++; ss=nn; pp=p; } else { pp++; ss++; } if (*ss=='\0') { if (*pp=='\0') return nn; else return NULL; } } return NULL; } bool SostPrimaOcc (char* vecchia, char* nuova, char* sorg, char* dest) { char* i=sorg; char* l=dest; char* k=nuova; char* z; char* start=sottostringa(vecchia,sorg); if (start==NULL) { while (*i != '\0') { *l=*i; i++; l++; } *l='\0'; return FALSE; } while (i!=start) { *l=*i; i++; l++; } while (*k!='\0') { *l=*k; k++; l++; } z=start+strlen(vecchia); while (*z!='\0') { *l=*z; z++; l++; } *l='\0'; return TRUE; } main() { char vecchia[NUM]; char nuova[NUM]; char sorg[NUM]; char dest[NUM*2]; bool b; printf("Inserisci la stringa: "); gets(sorg); printf("\nInserisci la stringa da sostituire: "); gets(vecchia); printf("\nInserisci una nuova stringa: "); gets(nuova); b=SostPrimaOcc(vecchia,nuova,sorg,dest); printf("Risultato: %s",dest); getch(); return 0; }