Liste chainée et lecture d'un fichier txt

cs_whiteknight Messages postés 19 Date d'inscription lundi 25 novembre 2002 Statut Membre Dernière intervention 11 septembre 2005 - 25 nov. 2002 à 18:48
cs_whiteknight Messages postés 19 Date d'inscription lundi 25 novembre 2002 Statut Membre Dernière intervention 11 septembre 2005 - 26 nov. 2002 à 16:03
Bonjour

j'ai un probleme pour charger des données depuis un fichier texte, les données recupérées doivent etre stocké dans un liste chainée déclaré ainsi

#ifndef repertoire_h
#define repertoire_h
// Déclaration de la structure data
struct data
{
int ref;
char nom[20];
char prenom[20];
char tel[11];
struct data *next; // pointeur vers une structure data
};

// On crée une structure PERSON de type data
typedef struct data PERSON;
// On cree LINK de type PERSON *
typedef PERSON *LINK;

// les données sont sauvegardé ainsi :

LINK save(LINK head) // Fonction de sauvegarde des données -- QUI MARCHE SANS PBS !
{
// Declaration des variables
char *ext=".txt";
char nom[21];
FILE *sortie;
LINK current;
current=head;
printf("Sauvegarde : \n");
// Saisie du nom de fichier
printf("Entrez le nom du fichier (sans extension) :");
scanf("%s",nom);
strcat(nom,ext);

if ((sortie=fopen(nom,"w"))==NULL) // Si l'ouverture s'est mal passée
{
printf("Erreur a l'ouverture du fichier %s. \n",nom);// Message d'erreur
system("PAUSE");
exit(0);
}

else // Sinon
{
while(current!=NULL) // Tant que la liste existe
{
// Sauvegarde des données
fprintf(sortie,"%d\n",current->ref);
fprintf(sortie,"%s\n",current->nom);
fprintf(sortie,"%s\n",current->prenom);
fprintf(sortie,"%s\n",current->tel);
current=current->next;
}
}
// Ferme le fichier
fclose(sortie);
return(head);
}

// ma fonction load pour le moent - MARCHE PAS DU TOUT !! - Charge rien

LINK load(LINK head)
{
// Declaration des variables
char *ext=".txt";
char nom[21];
char nom_f[21];
char prenom_f[21];
char tel_f[11];
FILE *entree;
LINK current;
current=head;
printf("Chargement : \n");
// Saisie du nom de fichier
printf("Entrez le nom du fichier (sans extension) :");
scanf("%s",nom);
strcat(nom,ext);

if ((entree=fopen(nom,"r"))==NULL) // Si l'ouverture s'est mal passée
{
printf("Erreur a l'ouverture du fichier %s. \n",nom);// Message d'erreur
system("PAUSE");
exit(0);
}

else // Sinon
{
while(current!=NULL) // Tant que la liste existe
{
// Chargement des données
fscanf(entree,"%d\n",current->ref);
fscanf(entree,"%s\n",nom_f);
fscanf(entree,"%s\n",prenom_f);
fscanf(entree,"%s\n",tel_f);
strcpy(current->prenom,prenom_f);
strcpy(current->nom,nom_f);
strcpy(current->tel,tel_f);
current=current->next;
}
}
printf("Chargement Reussi !!");
system("PAUSE");
// Ferme le fichier
fclose(sortie);
return(head);
}

voila si quelqu'un pouvait m'aider à la faire fonctionner ca m'aiderai bcp ... en + c'est assez urgent

Merci d'avance

whiteknight

2 réponses

cs_llo Messages postés 45 Date d'inscription jeudi 10 octobre 2002 Statut Membre Dernière intervention 6 décembre 2002
26 nov. 2002 à 12:30
hy,
pour moi ta fonction load devrait réaliser à chaque tour de boucle une allocation mémoire d'un poste puis réaliser le chaînage.... ce que tu ne fais pas!
l'lo
0
cs_whiteknight Messages postés 19 Date d'inscription lundi 25 novembre 2002 Statut Membre Dernière intervention 11 septembre 2005
26 nov. 2002 à 16:03
Slt

merci de ta réponse c'était effectivement cela !! j'ai eu du mal à m'en apercevoir mais ca marche maintenant merci !

ciao
0
Rejoignez-nous