IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Extraction d'informations depuis un fichier de données en C

Extraction d'informations depuis un fichier de données en C


précédentsommairesuivant

I. Introduction

Dans certains projets, il peut être nécessaire d'extraire des données depuis un fichier. Que ce soit une liste de contacts, des données pour remplir des tableaux ou pour des tableurs, des options utilisateurs, etc... Ce tutoriel va vous expliquer les bases pour lire différents formats et en extraire les données.

Dans un premier temps (Chapitre III), nous allons voir comment créer un fichier avec une structure appropriée au stockage d'une liste de contacts pour par exemple, un programme de gestion de contacts. Dans le Chapitre IV nous verrons comment lire des fichiers de type INI et en extraire les données suivant leur type (entiers, chaînes de caractères). Nous finirons par le format CSV au Chapitre V.

Le format XML (eXtended Markup Langage) ne sera pas traité ici, un tutoriel lui est entièrement consacré dans le tutoriel suivant : Utilisation de la bibliothèque libxml2 en C

II. Pré-requis

Quelques pré-requis sont indispensables pour les chapitres à suivre. Des fonctions que tout le monde devrait avoir constamment sous le coude, voici celles indispensables pour ce tutoriel et qui traitent des chaînes de caractères :

Fonction : str_dup
Sélectionnez
static char * str_dup (const char * str)
{
   char * dup = NULL;


   if (str != NULL)
   {
      size_t size = strlen (str) + 1;
      dup = malloc (size);

      if (dup != NULL)
      {
         memcpy (dup, str, size);
      }
   }


   return dup;
}

Cette fonction permet de copier simplement une chaîne de caractères. Le nouveau pointeur retourné par la fonction doit explicitement être libéré avec la fonction standard free.

La seconde fonction indispensable dans ce tutoriel permet de terminer une chaîne de caractères avec un zéro de fin de chaîne, ce qui n'est pas toujours le cas surtout dans des chaînes extraites d'un fichier :

Fonction : str_finalize
Sélectionnez
static void str_finalize (char * str)
{
   char * p = strchr (str, '\n');

   if (p != NULL)
   {
      *p = 0;
   }
}

Cette fonction recherche un éventuel saut de ligne et le remplace par un zéro terminal. Les sauts de ligne sont surtout présents lorsqu'on récupère des lignes de texte à partir d'un fichier mais les fonctions standards attendent un zéro de fin de chaîne.


précédentsommairesuivant

Copyright © 2009 Franck Hecht. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.