salut tout le monde
voila je travaile sur les pointeurs en C et voila l'énoncé de l'exercice:
Ecrire un programme qui lit deux chaînes de caractères CH1 et CH2 au clavier et élimine toutes les lettres de CH1 qui apparaissent aussi dans CH2. Utiliser deux pointeurs P1 et P2, une variable logique TROUVE et la fonction strcpy.
Exemples:
Bonjour
Bravo
==>
njou
Bonjour
bravo
==>
Bnjou
abacab
aa
==>
bcab
et voila la solution de l'exercice:
#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 première chaîne de caractères"
" (max.100 caractères) :\n");
gets(CH1);
printf("Entrez la deuxième chaîne de caractères"
" (max.100 caractères) :\n");
gets(CH2);
/* Eliminer les lettres communes */
/* Idée: Parcourir CH2 de gauche à droite et contrôler */
/* pour chaque caractère s'il se trouve aussi dans CH1. */
/* Si tel est le cas, éliminer le caractère de CH1 à */
/* l'aide de strcpy. */
for (P2=CH2; *P2; P2++)
{
TROUVE = 0;
for (P1=CH1 ; *P1 && !TROUVE ; P1++)
if (*P2==*P1)
{
TROUVE = 1;
strcpy(P1, P1+1);
}
}
/* Affichage du résultat */
printf("Chaîne résultat : \"%s\" \n", CH1);
return 0;
}
et j'arrive pas à comprendre le dernier bloc 'c'est à dire ça:
for (P2=CH2; *P2; P2++)
{
TROUVE = 0;
for (P1=CH1 ; *P1 && !TROUVE ; P1++)
if (*P2==*P1)
{
TROUVE = 1;
strcpy(P1, P1+1);
}
}
je doit savoir la signiffication de chaque ligne s'l vous plait par exemple dans la boucle "for" il ya *P1 && !TROUVE j'ai rien compri
s'il vous plait j'attent votre reponse
pliiiiiiiiiiz
