Rechercher une donnée dans un fichier texte

Problème

Vous voulez trouver une donnée dans un fichier texte à partir d’un motif.

Solution

Lisez le fichier ligne par ligne et testez le motif sur chaque ligne.

Discussion

Pour trouver une donnée dans un fichier texte, il suffit de le lire ligne par ligne et de tester le motif sur chaque ligne. Voici un exemple ou le test de motif consiste à tester la présence du motif dans la chaîne :


int 
file_parse (const char *file_name, const char *pattern, char *buffer, 
            int buf_size) 
{ 
  FILE *fd; 
  int r;                        /* valeur de retour */ 
 
  if (NULL == (fd = fopen (file_name, "r"))) 
    return (-1); 
 
  r = 1; 
  while ((1 == r) && (NULL != fgets (buffer, buf_size, fd))) 
    { 
      if (0 == strcmp (buffer, pattern)) 
        r = 0; 
    } 
  if ((1 == r) && !feof (fd)) 
    r = -1; 
 
  fclose (fd); 
 
  return (r); 
}
 

Dans cet autre exemple, nous utilisons une expression régulière pour tester le motif :


int 
file_parse (const char *file_name, const char *pattern, char *buffer, 
            int buf_size) 
{ 
  FILE *fd; 
  regex_t preg; 
  int r;                        /* valeur de retour */ 
  if (regcomp (&preg, pattern, REG_NOSUB)) 
    return (-1); 
  if (NULL == (fd = fopen (file_name, "r"))) 
    return (-1); 
 
  r = 1; 
  while ((1 == r) && (NULL != fgets (buffer, buf_size, fd))) 
    { 
      if (0 == regexec (&preg, buffer...
Pour consulter la suite, découvrez le livre suivant :
couv_EI3CACT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Lire un fichier de configuration simple
Suivant
Ajouter des données à un fichier