Salut !
Ton algorithme semble correct, bien que la saise de la page html soit un peu bizarre (tout saisir à la main...). Enfin il y a quand même un problème, c'est que la recherche s'arrête lorsque tu trouve la première occurence, hors je pense qu'il peut y en avoir plusieurs dans la page.
Je te propose un algo qui devrait fonctionner (il n'y a que la partie recherche) :
void main() {
int i, precedent=0, precedent2=0 ;
char html2[2000] ;
// Initialise tous html2 à 0
FillMemory(html2, 2000, 0) ;
// Parcours toute la chaine html
for (i=0; i<lghtml; i++) {
// Si un mot est trouvé
if (!strncmp((html+i), mot, lgmot))
{
// Copie tous les bloc qui précède ce mot depuis la dernière copie
memcpy((html2+precedent2), html+i, (i-precedent)) ;
// Copie le mot entouré des balises
memcpy((html2+precedent2+i), "<FONT color=#FF0000>", 21) ;
memcpy((html2+precedent2+i+21), mot, lgmot) ;
memcpy((html2+precedent2+i+21+lgmot, "</FONT>", 8) ;
// Met à jour la dernière copie
precedent=i ; // Pointeur dans html
precedent2+= 29 + lgmot ; // Pointeur dans html2
}
}
// Il faut répéter la dernière opération
memcpy((html2+precedent2), html+precedent, (i-precedent)) ;
// Si on a trouvé une occurence
if (!precedent)
printf("Pas d'occurence de %s trouvée dans la page\n", mot) ;
}
Bien sur il peut être encore améliorer, il faudrait enlever cet affreux char html2[2000] et faire un tableau dynamique qui se redimensionne à chaque ajout.
on pourrait aussi utiliser une classe CSS2 dans la balise FONT afin que l'on puisse modifier dynamiquement l'affichage des mots trouvés sans avoir besoin de tout re coder.
Un autre conseil : quand tu déclare une chaine évite de faire :
char rouge[40]="<FONT color=#FF0000>contentait";
et fait plutot :
char rouge[]="<FONT color=#FF0000>contentait";
ça t'évite 1) de déclarer un espace mémoire alors que ce n'est pas nécessaire et de 2) avoir à compter tous les caractères de la chaîne. Amuses toi bien ;)
@+ Neria
PS : Sais tu lire les données à partir d'un fichier ?