ok fatto it works:
codice:
	char *text= "Nel mezzo del cammin di nostra vita al mezzo dove";
	char *search = "mezzo";
	char *replace = "centrale";
	char *currentSearch = text;
	char *newText;

	unsigned short iText=0;
	unsigned short iNewText=0;

	newText = (char *)calloc(1,sizeof(char));

	//printf("Text=>%d\nnewText=>%d\n\n",text,newText);
	while( (currentSearch=strstr(text+iText,search)) != NULL )  {
	

		newText = (char *)realloc(newText, ( strlen(newText)+strlen(search)+strlen(text)-iText-strlen(search) ) * sizeof(char) );
		
		strncat(newText+iNewText,text+iText,currentSearch-( text+iText ));
		
		strcpy( newText+strlen(newText),replace );
		
		
		iNewText += currentSearch-( text+iText ) + strlen(replace);

		iText+=currentSearch-(text+iText)+strlen(search);
		
		//printf("cS=>%d \n iNewText=>%d \n iText=>%d \n",currentSearch,iNewText,iText);
	}

	strcpy( newText+iNewText,text+iText );
	

	printf("S:%s\n",newText);
però sembra quasi come se avessi scritto del codice aggiuntivo non so perchè..
qualche errore di cattiva programmazione?