Extraction d'informations depuis un fichier de données en C
Date de publication : 21/11/2009
I. Introduction
II. Pré-requis
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.
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 |
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 |
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 standard attendent un zéro de fin de chaîne.
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.