begin process at 2012 05 30 14:47:05
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

rechercher un mot


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

rechercher un mot

mardi 24 mai 2005 à 14:45:20 | rechercher un mot

adeline93

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

mardi 24 mai 2005 à 20:23:49 | Re : rechercher un mot

neria

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 ? ...

@+ Neria
mardi 24 mai 2005 à 21:47:36 | Re : rechercher un mot

adeline93

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

mercredi 25 mai 2005 à 08:47:30 | Re : rechercher un mot

neria

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...
lundi 30 mai 2005 à 22:03:56 | Re : rechercher un mot

adeline93

pourriez vous voir si avec ce programme ca peu marcher ou sil manque des choses ??
merci beaucoup

#include <stdio.h>
#include <string.h>

main() {
int x=0;
int lgmot;
int lghtml;
int testmot=0;
char html[1200]; // c'est la chaine de caractère dans laquelle on
copie le fichier lu dans l'entrée standart
char temp[300]="</FONT>";
char rouge[40]="<FONT color=#FF0000>contentait"; // chaîne qui va
copier
char mot[]="contentait"; // mot sert de référence pour la
comparaison des chaines
int i;
int test=0;
lgmot=strlen(mot); // récupère dans lgmot la longueur de la chaine
mot
*html=getchar();   // permet d'initialiser la première valeur de la
chaine html[0]
while ((*(html+x)) != EOF) {  // cette boucle permet de lire le
fichier en entrée standart EOF signifis End Of File.
x=x+1;
*(html+x)=getchar();

}
*(html+x)='\0'; // rajoute '\0' à la fin de la chaine html: une
chaine se finit tjrs par le caractère \0 qui signifie la fin
x=0;
lghtml=strlen(html); // récupère ds lghtml la longueur de la chaîne
html
while (test == 0) {
if ((strncmp(mot,html+x,lgmot))==0) { // compare les chaînes de
caractères à la longueur de lgmot
test=1; // lorsqu'un mot est trouvé: la boucle s'arrête
testmot=1;
strcat(temp,html+x+lgmot); // copie toute la chaine html apres le mot
trouvé dans la chaine temp
strcpy(html+x,rouge); // met la chaine rouge à la position x dans la
chaine html
strcpy(html+x+20+lgmot,temp); // copie temp à html
}
if (x == lghtml) {
test=1;
printf("Pas de mot dans la page html\n");
}
x=x+1;
}

if (testmot==1) printf("%s\n",html);
//printf("%s\n",html);

}

mardi 31 mai 2005 à 15:37:22 | Re : rechercher un mot

neria

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 ?

mardi 31 mai 2005 à 19:22:48 | Re : rechercher un mot

adeline93

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
mardi 31 mai 2005 à 19:32:11 | Re : rechercher un mot

neria

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 ;)

@+ Neria



Cette discussion est classée dans : mot, rechercher


Répondre à ce message

Sujets en rapport avec ce message

Rechercher une chaîne de caractère dans un fichier et afficher la ligne !! [ par UncleShu ] Exemple : Mot à rechercher :-> friend----fichier où il faut rechercher le mot-----enfant childenfants childrenami friendwhen [Visual C++]Rechercher dans une liste [ par goutbouyo ] Salut, Et oui encore moi...Je voudrais pouvoir effectuer une recherche interne dans mon prog. On tape sa recherche dans un edit box puis on clique sur rechercher un mot dans un fichier txt et afficher toue la ligne [ par briaros76 ] J'aimerai savoir comment je doit mi prendre pour rechercher un mot dans un fichier texte et ensuite afficher toute la ligne sur laquelle il ce trouve. afficher plusieurs lignes qui contient le mot rechercher [ par cobra176 ] c'est un code demander par quelqu'un d'autre et que quelqu'un a répondu mais il n'afficherque la premier ligne et moi je recherche le moyens d'affiche rechercher un mot dans une liste [ par akwell1 ] salut a tous,j'ai creer un tableau contenant des mots ( 9 lettres maximum)je voudrais que lorsque l'utilisateur rentre une sequence de 9 lettre aléato Rechercher un mot dans un fichier et afficher son contenu en C/C++ [ par M_didi ] Bonjour,encore moi et oui. Je suis toujours sur mn fichier de mesure. Voilà, je voudrais savoir comment on peut rechercher un mot et afficher son cont rechercher un mot dans un fichier txt [ par tanguy704 ] Bonjour Je suis entrain de réaliser un jeu genre scrabble. Les mots valides proposés par les joueurs sont stockés dans un fichier txt un mot par lign rechercher un mot dans une chaine de caractere [ par meloo ] Bonsoir,J'ai un petit programme à faire en C++ qui n'est pas très dur de prime abors. Le seul probleme est que je n'ai pas le droit d'utiliser de fonc jeu motus: affichage du mot tapé [ par janyoura ] J'ai besoin de faire l'affichage du mot tapé par l'utilisateur dans les cases correspondantes, chaque lettre dans une case de la matrice. j'ai pris ex


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,976 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales