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