Trouver une chaîne dans une autre
Bonjour !
J'ai un petit soucis avec un exo que j'essaye de faire, je veux trouver dans un mot saisi par l'utilisateur si celui-ci comporte l'autre chaîne saisie par l'utilisateur, sans utiliser les fonctions toutes évidemment ! 8-)
Voilà ce que j'ai essayé de faire :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
#include <stdio.h>
#include <string.h>
int main(void)
{
char src[256] = {};
char facteur[256] = {};
int compteur = 0;
int i=0;
int j=0;
printf("Saisir le premier mot: ");
scanf("%s", &src);
printf("Saisir le deuxiéme mot: ");
scanf("%s", &facteur);
int longueur = strlen(src);
int longueurFacteur = strlen(facteur);
for(i=0 ; i<longueur-longueurFacteur+1 ; i++){
for(j=0 ; i<longueur-longueurFacteur+1; j++)
if(facteur[i] == src[j]){
compteur++;
printf("%d \n", compteur);
printf("%d %d \n",j, i );
}
else
j=0;
if(compteur == longueurFacteur){
printf("Le mot %s est bien un mot facteur de %s \n", facteur, src);
return 1;
}
}
return 0;
} |
voilà ce que j'obtient :
Citation:
root@Max:~/Bureau/C# gcc facteur.c
root@Max:~/Bureau/C# ./a.out
Saisir le premier mot: polyco
Saisir le deuxiéme mot: poly
1
0 0
J'ai essayé aussi avec une boucle while
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
#include <stdio.h>
#include <string.h>
int main(void)
{
char src[256] = {};
char facteur[256] = {};
int compteur = 0;
int i=0;
int j=0;
printf("Saisir le premier mot: ");
scanf("%s", &src);
printf("Saisir le deuxiéme mot: ");
scanf("%s", &facteur);
int longueur = strlen(src);
int longueurFacteur = strlen(facteur);
for(i=0 ; i<longueur-longueurFacteur+1 ; i++){
while(i<longueur-longueurFacteur+1)
if(facteur[i] == src[j]){
compteur++;
printf("%d \n", compteur);
j++;
printf("%d %d \n",j, i );
}
else
j=0;
if(compteur == longueurFacteur){
printf("Le mot %s est bien un mot facteur de %s \n", facteur, src);
return 1;
}
}
return 0;
} |
Voilà ce que j'obtient : une boucle infinie
Citation:
Saisir le premier mot: polycop
Saisir le deuxiéme mot: poly
1
1 0
2
1 0
3
1 0
4
1 0
5
1 0
6
1 0
etc
Ce qui est bizarre c'est que mon i ne s'incrémente pas et que il passe dans mon else alors qu'il est passé dans mon if avant ?? :/