All pastes #833770 Raw Edit

Unnamed

public text v1 · immutable
#833770 ·published 2007-12-27 17:03 UTC
rendered paste body
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");
}