Projet Langage C Help!

Sneakito Messages postés 13 Date d'inscription samedi 28 mai 2005 Statut Membre Dernière intervention 4 juin 2005 - 28 mai 2005 à 02:55
simtiers Messages postés 207 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 2 novembre 2006 - 30 mai 2005 à 19:24
Voilà pour lundi prochain je dois rendre un projet en C, le sujet que j'ai choisi est le suivant:
-Recherche un mot dans une page HTML (hors balise) et le mettre en évidence (gras, rouge,?)

Cela semblera très simple à certains, mais mes connaissances en C sont très basiques et mon dernier cours remontre à très loin(l'année dernière), je ne me souviens plus de grand choses.

Je remercie d'avance, ceux qui pourront m'aider.

5 réponses

simtiers Messages postés 207 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 2 novembre 2006
28 mai 2005 à 09:47
Alors, pour la méthode, je dirais ceci :



- ouvrir le fichier avec un FILE* f = fopen(...)

- récupérer la taille du fichier

- charger tout le fichier en memoire (plus simple)

- faire un char* c = strstr(...) pour trouver le mot (attention, sensible à la casse)

(garde le pointeur retourné par cette fonction => position du mot)

- créer une nouvelle chaine, copier ce qu'il y a avant le mot dans
cette chaîne, (strcpy), puis ajouter la balise HTML : strcat( chaine2,
"" );, ajouter le mot recherché, la fin de la balise
HTML, puis copier la fin du fichier : strcat( chaine2,
c+strlen(MotRecherche) );

- écrire le tout dans un fichier (fwrite....)

- faire le fichier (fclose)



Maintenant, le mot recherché (1ere apparition) est affiché en gras
0
Sneakito Messages postés 13 Date d'inscription samedi 28 mai 2005 Statut Membre Dernière intervention 4 juin 2005
28 mai 2005 à 11:59
Je te remercie mais je malheuresement je ne comprends pas tout à ce que tu m'as mis, j'espere mieux m'y retrouver apres avoir lu un bon didactiel.
0
Sneakito Messages postés 13 Date d'inscription samedi 28 mai 2005 Statut Membre Dernière intervention 4 juin 2005
30 mai 2005 à 19:06
Un ami de la famille qui s'y connait un peu en informatique, a écrit ça:

#include <stdio.h>
#include <stdlib.h>


int main()
{
//ouverture de fichier en lecture
FILE *file = fopen("pagehtml.txt","r");
char buffer[1000];
if (file == NULL) {
fprintf(stderr,"Erreur dans l'ouverture du fichier");
exit(-1);
}

sprintf(buffer, "%s","pagehtml.txt");
//fermeture du fichier
fclose(file);
//lecture à parti du buffer
//Demander le mot à rechercher
char tmp[30];
char *mot;
do {
printf( "Rechercher :" );
gets( tmp );
} while ( (sscanf(tmp, "%s",mot)!=1));
sprintf(tmp, "%s", mot);
puts(tmp);
//recherche du mot tapé dans le buffer
//utiliser while avec getchar et strcmp pour la comparaison avec mot


//system("PAUSE");
return 0;
}

Mais c'est incomplet!Vous pouvez m'aider SVP.
0
Sneakito Messages postés 13 Date d'inscription samedi 28 mai 2005 Statut Membre Dernière intervention 4 juin 2005
30 mai 2005 à 19:07
J'ai ai oublié de dire que j'y ai apporté quelques minimes modifications.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
simtiers Messages postés 207 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 2 novembre 2006
30 mai 2005 à 19:24
Oulah, grosse erreur :

sprintf(buffer, "%s","pagehtml.txt");



Tu ne copies pas le contenu du fichier, mais son nom !

à écrire :

fread( &buffer, sizeof(char), sizeof(buffer), file );



Pour la recherche, utilise la fonction une première fois

char* position_dans_buffer = strstr( buffer, mot );

puis :

position_dans_buffer = strstr( position_dans_buffer, mot );



Pense à verifier que (position_dans_buffer != NULL)

Si (position_dans_buffer==NULL), tu peux quitter ta boucle.



Ici, à chaque itération, position_dans_buffer pointe sur le début du mot à rechercher.
0
Rejoignez-nous