Pour compléter le réponse précédente :
strstr() retourne NULL si la sosu-chaine n'est pas trouvée ou si elle est trouvée l'adresse du début de la sous-chaine dans la chaine.
Ceci étant, il faut savoir si on considère le cas où une deuxième sous-chaine peut débuter à l'intérieur de la première sous-chaine.
Par exemple chaine : "xxxabababxxx" , sous-chaine : "aba"
Une premiere sous-chaine est trouvée en "xxxaba..." Peut-on considérer que la deuxième est en "xxxababa", donc inclus le dernier caractère de la première sous-chaine ou qu'il n'y a pas de deuxième sous-chaine à partir de la fin de la première ?
- Dans le premier cas,
1- initialiser le pointeur p à l'adresse du début de la chaine
2- rechercher la sous-chaine à partir de p
- si on en trouve une débutant en p, faire p = p+1 et recommencer en 2.
- sinon, il n'y en a plus.
- Dans le second cas, au lieu de chercher les sous chaines à partir de p+1 on recherchera à partir p+L où L est la longueur de la sous-chaine
Partager