Previous Next Up Index Contents

Exercice 8.22

#include <stdio.h>
main()
{
 /* Déclarations */
 char SUJ[100]; /* chaîne à transformer */
 char CH1[100]; /* chaîne à rechercher  */
 char CH2[100]; /* chaîne de remplacement */
 char FIN[100]; /* chaîne de sauvegarde pour */
                /* la fin de SUJ. */
 int I;      /* indice courant dans SUJ */
 int J;      /* indice courant dans CH1 et CH2 */
 int K;      /* indice d'aide pour les copies  */
 int TROUVE; /* indicateur logique qui précise */
             /* si la chaîne OBJ a été trouvée */
 
 /* Saisie des données */
 printf("Introduisez la chaîne à rechercher  CH1 : ");
 gets(CH1);
 printf("Introduisez la chaîne à remplacer   CH2 : ");
 gets(CH2);
 printf("Introduisez la chaîne à transformer SUJ : ");
 gets(SUJ);

 /* Recherche de CH1 dans SUJ */
 TROUVE=0;
 for (I=0; SUJ[I] && !TROUVE; I++)
    if (SUJ[I]==CH1[0])
        {
         for (J=1; CH1[J] && (CH1[J]==SUJ[I+J]); J++)
            ;
         if (CH1[J]=='\0') TROUVE=1;
        }
 	

 /* Si CH1 a été trouvée dans SUJ alors sauvegarder la fin */
 /* de SUJ dans FIN, copier ensuite CH2 et FIN dans SUJ.   */
 if (TROUVE)
    {
     I--;
     /* Maintenant  I indique la position de CH1 */
     /* dans SUJ et J indique la longueur de CH1 */
     /* Sauvegarder la fin de SUJ dans FIN */
     for (K=0; SUJ[K+I+J]; K++)
          FIN[K]=SUJ[K+I+J];
     FIN[K]='\0';
     /* Copier CH2 dans SUJ */
     for (K=0; CH2[K]; K++,I++)
          SUJ[I]=CH2[K];
     /* Recopier FIN dans SUJ */
     for (K=0; FIN[K]; K++,I++)
          SUJ[I]=FIN[K];
     /* Terminer la chaîne SUJ */
     SUJ[I]='\0';
    }
 
 /* Affichage du résultat */
 printf("Chaîne résultat : \"%s\"\n", SUJ);
 return 0;
}


Previous Next Up Index Contents

Feedback - Copyright © 1993,1996,1997 F.Faber