Previous Next Up Index Contents

Exercice 8.23

#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  */


 /* 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 */
 for (I=0; SUJ[I]; I++)
    if (SUJ[I]==CH1[0])
       {
        for (J=1; CH1[J] && (CH1[J]==SUJ[I+J]); J++)
            ;
        if (CH1[J]=='\0') /* TROUVE ! */
          {
           /* 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 et déplacer */
           /* I derrière la copie de CH2. */
           for (K=0; CH2[K]; K++,I++)
               SUJ[I]=CH2[K];
           /* Recopier FIN dans SUJ */
           for (K=0; FIN[K]; K++)
               SUJ[I+K]=FIN[K];
           /* Terminer la chaîne SUJ */
           SUJ[I+K]='\0';
           I--; /* réajustement de l'indice I */
          }
       }
 
 /* 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