Bonjour à tous,
Je doit récupérer les mots d'une page HTML en langage C.
Pour simplier le problème, mon programme doit tout simplement ignorer tout texte compris entre les caractères < et > qui sont des instructions HTML. Je dois donc récupérer les mots à l'extérieur des caractères < et >. Les mots sont délimités par des espaces. On se retrouve donc avec des expressions du type:
<blablablabla>mot1 mot2 mot3<blablablabla>mot 4<blablablabla>mot5 mot6...
J'ai commencé à écrire une petite fonction mais il y a une couille dans le paté apparement. Je suis obligé de constituer un mot en récupérant les caractères 1 à 1 tant que je n'ai pas rencontré d'espace et que je suis à l'extérieur des caractères < et > . Apparement ce qu'il y a dans mon buffer ce n'est pas ce que je souhaite à savoir un mot. Je stockerai plus tard tous les mots dans un buffer. Pour le moment je raisonne à l'echelle d'un mot;
voici ma fonction:
//---- Fonction qui va extraire les mots non compris entre les caractères < et >
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 void extraire_mot(FILE*) { bool fCrochet = FALSE; // Initialisation du Flag. char buffer_mot[40]; // Buffer contenant le mot constitué par ajout de caractères. char bData; // Variable locale qui contient le caractère en cours. int i; do { bData = fgetc(fichier); // Lecture d'un caractère. if (bData == '<') // Si le caractère rencontré est '<' positionnement du FLAG à '1'. { fCrochet = TRUE; } else if (bData == '>' && fCrochet == TRUE) // Si le caractère en cours '>' et que le FLAG est vrai. { fCrochet = FALSE; // Positionnement du Flag à '0'. if(bData != ' ') // Tant que le caractère espace n'est pas rencontré. { buffer_mot[i++] = bData; // Récupération des lettres formants un mot. printf("%s", buffer_mot); } } else { i=0; memset(buffer_mot, 0, 40); } }while(!feof(fichier)); }





Répondre avec citation






Partager