Un fichier "structuré" par entrée en C ..

Fermé
M4nd - 4 mai 2010 à 17:54
0beron Messages postés 76 Date d'inscription dimanche 12 juillet 2009 Statut Membre Dernière intervention 15 février 2011 - 8 mai 2010 à 18:28
Bonjour,


Je cherche à créer un programme qui permet de créer des fichiers "structurés", programmée en C;
C'est à dire un fichier dans lequel j'ajouterai des entrées dans un fichier, à la manière d'un répertoire où l'on ajoute le nom, l'adresse et le numero de tel de la personne...

Par exemple je veux créer un fichier où il n'y aura que des étudiants dedans. Celui ci aura une forme :

/*Entree 1*/ //N'apparait pas dans le fichier
Eric
Dupond
20/06/1985

/*Entree 2*/
Fabien
Berlo
12/05/1986

je voudrais avec le programme, pouvoir créer une entrée, ayant une structure spécifique par fichier.
On a ici un fichier avec des entrées ayant 3 champs. Mais j'aimerai pouvoir faire en sorte qu'il y est 4 champs si je fais un fichier "voiture" par exemple.

J'aimerai aussi pouvoir modifier un champ, changer Fabien par Tonio par exemple.


Est ce qu'à votre avis il est possible d'utiliser des typedef struct pour "structuré" mon fichier et ainsi rendre la création et le remplissage du fichier plus simple ?

avec par exemple typedef struct entree {
char* nom;
champ champs1;
champ champs2;
champ champs3;
};

typedef struct champ {
char* nom;
int taille; (pour définir le nombre de caractère alloué au champs, pour ne pas effacer du texte par erreur)
}


typedef struct fst {
int nbrChamps;
FILE* f; (pour stocker l'adresse du fichier en mémoire pour pouvoir m'en servir après);
}

J'aimerai pouvoir ajouter les entrées à la suite des autres, et si possible pouvoir rechercher une entrée particulière(une sorte d'index)..

J'ai essayé par 3 tentatives de faire ce programme mais je n'y arrive pas.. J'ai toujours des erreurs et je sais qu'il faut que je recommence à zéro, je cherche donc votre aide...

Si quelqu'un peut m'aider pour les structures ou "la forme" que le programme doit avoir je lui serai vraiment reconnaissant ! (peut être même une rénumération si vraiment ça donne quelque chose de concret !)

Cordialement,


M4nd
A voir également:

3 réponses

0beron Messages postés 76 Date d'inscription dimanche 12 juillet 2009 Statut Membre Dernière intervention 15 février 2011 56
6 mai 2010 à 18:05
Bonjour,

Si j'ai bien compris, ton but c'est de faire une liste de personne en stockant certains caractéristiques. Le problème vient de la structure ou de la récuperation d'information à partir du fichier txt?

Pour la structure je te propose ceci:

typedef struct cellule{
char nom[20];
char prenom[20];
char date[20];
struct cellule *suivant;
} *Liste;

Je n'ai pas bien compris pourquoi tu voulais faire une structure à l'intérieur de l'autre puisque ca te fait stocker plusieurs fois les mêmes informations (par exemple le nom).

Ensuite tu peux créer une liste en faisant pointer chaque structure liste sur la suivante.
0
Bonjour,

Non en fait je veux créer des fichiers avec des structures, pour pouvoir modifier les champs, en ajouter...

Le fichier aurait une forme comme celle-ci
NbrEntrées/0; (ici 2)

1.Eric..................../0Dupond................../01985..................../0
2.Fabien...................../0Berlo................./01986 ................/0

Le problème c'est qu'au lancement de l'application, on ne sait pas si l'utilisateur voudra 3, 4 ou 5 champs dans ses entrées...
Et donc je ne peux créer des struct bien définies types typedef struct cellule{
char nom[20];
char prenom[20];
char date[20];
struct cellule *suivant;
} *Liste;

vu que je ne veux pas seulement créer des fichiers avec des étudiants, mais avec des entrées et des champs non défini avant l'execution...

Une sorte de "structure dynamique" mais je ne vois pas du tout comment faire ça....
0
0beron Messages postés 76 Date d'inscription dimanche 12 juillet 2009 Statut Membre Dernière intervention 15 février 2011 56
8 mai 2010 à 18:28
Ok je vois le truc.
En fait il te faudrait plutôt un tableau de structure dans ce cas.
Un truc du type :

Champs tab[taille];

typedef struct champs{
char information[20];
struct champ *suivant;
} Champs;

De cette façon tu as une personne par ligne de tableau, qui pointe vers un nombre indéterminé d'informations. Par exemple le premier élément contiendrait le nom, le deuxième élément le prénom etc ...
Et quand tu changes de ligne de tableau tu changes de personne, et pour connaitre le nombre de personne tu parcours ton fichier et ca correspond au nombre de ligne.
0