Previous Next Up Index Contents

Exercice 9.14

#include <stdio.h>
#include <string.h>
 main()
{
 /* Déclarations */
 char CH1[101], CH2[101]; /* chaînes données */
 char *P1, *P2; /* pointeurs d'aide dans CH1 et CH2 */
 int TROUVE; /* indicateur logique: vrai, si le caractère */
             /* actuel dans CH1 a été trouvé dans CH2.    */
 
 /* Saisie des données */
 printf("Entrez la chaîne à transformer"
        " (max.100 caractères) :\n");
 gets(CH1);
 printf("Entrez la chaîne à supprimer  "
        " (max.100 caractères) :\n");
 gets(CH2);
 /* Rechercher CH2 dans CH1 : */
 /* L'expression P2-CH2 est utilisée pour déterminer l'indice */
 /* de P2 dans CH2. On pourrait aussi résoudre le problème à  */
 /* l'aide d'un troisième pointeur P3 parcourant CH1. */
 TROUVE=0;
 for (P1=CH1 ; *P1 && !TROUVE ; P1++)
     {
      for (P2=CH2 ; *P2 == *(P1+(P2-CH2)) ; P2++)
          ;
      if (!*P2)
          TROUVE = 1;
     }
 
 /* A la fin de la boucle, P1 est incrémenté, donc */
 P1--; 
 /* Si CH2 se trouve dans CH1, alors P1 indique la position */
 /* de la première occurence de CH2 dans CH1 et P2 pointe à */
 /* la fin de CH2. (P2-CH2) est alors la longueur de CH2.   */  
 if (TROUVE)
     strcpy(P1, P1+(P2-CH2));
 
 /* Affichage du résultat */
 printf("Chaîne résultat : \"%s\" \n", CH1);
 return 0;
}


Previous Next Up Index Contents

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