cs_adeline93
Messages postés6Date d'inscriptionmardi 24 mai 2005StatutMembreDernière intervention31 mai 2005
-
24 mai 2005 à 14:45
cs_neria
Messages postés319Date d'inscriptionvendredi 21 février 2003StatutMembreDernière intervention16 février 2009
-
31 mai 2005 à 19:32
bonjour
je débute en langage c et j'ai un projet à rendre pouvez vous m'aider ???
voici mon sujet:
rechercher un mot dans une page html (hors balise) par exemple sur google et le mettre en gras ou en couleur lorsqu'il est trouvé
merci d'avance
cs_neria
Messages postés319Date d'inscriptionvendredi 21 février 2003StatutMembreDernière intervention16 février 2009 24 mai 2005 à 20:23
Salut !
Essais d'être plus précis(e) dans la déscription de ton problème : est-ce que les données se trouvent dans un fichier, est-ce que tu doit créer un fichier pour le résultat, si oui dans quel format ? ...
cs_adeline93
Messages postés6Date d'inscriptionmardi 24 mai 2005StatutMembreDernière intervention31 mai 2005 24 mai 2005 à 21:47
en fait je doi faire la recherche sur une page google
je ne doi rien créer de plus
l'utilisteur recherche un mot sur google et ce mot doi safficher en gras ou italique ou couleur ... dans les réponses trouvées c'est tout
merci beaucoup
cs_neria
Messages postés319Date d'inscriptionvendredi 21 février 2003StatutMembreDernière intervention16 février 2009 25 mai 2005 à 08:47
Tu utilises quel contrôle pour faire ça ? Parce que sinon il y a toujours moyen de récupérer la page affichée et de la modifier. Sinon, je n'ai pas vraiment de solutions...
cs_neria
Messages postés319Date d'inscriptionvendredi 21 février 2003StatutMembreDernière intervention16 février 2009 31 mai 2005 à 15:37
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), "", 21) ;
memcpy((html2+precedent2+i+21), mot, lgmot) ;
memcpy((html2+precedent2+i+21+lgmot, "", 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]="contentait";
et fait plutot :
char rouge[]="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 ?
cs_adeline93
Messages postés6Date d'inscriptionmardi 24 mai 2005StatutMembreDernière intervention31 mai 2005 31 mai 2005 à 19:22
merci bcp pour ton aide mais je pense ke je vais m'arrèter à ca surtout ke je dois le rendre très prochainement ...
c'est trop compliké pour moi le c ;)
merci encore et petet à bientot
Adeline
cs_neria
Messages postés319Date d'inscriptionvendredi 21 février 2003StatutMembreDernière intervention16 février 2009 31 mai 2005 à 19:32
Salut !
De rien, mais c'est domage de s'arrêter si tôt, alors que l'on peut faire plein de choses avec le C (plus que tu ne l'imagines) et encore plus avec le C++. En tout cas je te souhaites bonne chance pour la suite ;)