void replac(char* str, char* oldstring,char* newstring)
{
int i=0,tour=0;
char *begin=str,*test=oldstring,*copie=newstring,nouveau[100];
while (1)
{
//if (*begin=='\0' ) //Cas ou l'analyse est terminée et le programme est arrivée à la fin de str.
//{
// *(nouveau+i)='\0';
// break; // Analyse terminée. Aller à l'affichage final
//}
//Cas ou la premiere lettre (ou les suivantes si les premiere sont les memes) d'un mot differe de l'equivalente dans oldstr
if (*begin!=*test && *test!='\0')
{
//Cas du mot commencant par quelques lettres de oldstr mais n'est pas equivalent a oldstr
//test sur tour permet de s'assurer que le programme ne se trouve pas sur le premier mot
while (*(begin-1)!=' ' && tour!=0)
{
begin--;
test=oldstring;
}
//copie du mot non remplacable et de l'espace suivant (ou du '\0') dans le nouveau tableau
while (*begin!=' ' && *begin!='\0')
{
*(nouveau+i++)=*(begin++);
//if (i>99) return str;
}
*(nouveau+i++)=*(begin++);
// if (i>99) return str;
if (*begin=='\0' ) //Cas ou l'analyse est terminée et le programme est arrivée à la fin de str.
{
*(nouveau+i)='\0';
break; // Analyse terminée. Aller à l'affichage final
}
}
//cas ou la premiere lettre (ou les suivantes si les premieres sont les memes) d'un mot est egale a l'equivalente en oldstr
else
{
//cas ou le mot entier est egal
if (*test=='\0')
{
//copie de newstr dans le nouveau tableau
while (*copie!='\0')
{
*(nouveau+i++)=*(copie++);
// if (i>99) return str;
}
test=oldstring; //reinitialisation de test
copie=newstring;//reinitialisation de copie
*(nouveau+i++)=*(begin++);//copie de l'espace
// if (i>100) return str;
continue; //retour au debut de la boucle (mot suivant)
}
//incrementations en vue de l'analyse de la prochaine lettre
begin++;
test++;
tour++;
}
}
cout<<nouveau;
}
int main()
{
char string[100]="this those";
char oldStr[30] = "this";
char newStr[30] = "those";
replac(string,oldStr,newStr);
system("pause");
}