Chargement de données

telecomakram Messages postés 14 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 2 décembre 2007 - 2 déc. 2007 à 00:15
Neo_Fr Messages postés 653 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 10 novembre 2014 - 2 déc. 2007 à 18:56
Bonjour
J’ai un fichier dont les données sont organisés comme suis

nom_cours1
nom_cours2

nom_coursN
$
matricule1 nom1 prenom1 nb_cours1
nom_cours1 note_cours1
nom_cours2 note_cours2

nom_coursN note_coursN
matricule2 nom2 prenom2 nb_cours2
nom_cours1 note_cours1
nom_cours2 note_cours2

nom_coursN noteCoursN

Jai des tableaux a initialisé J’ai réussi à initialiser le tableau nomCours avec le code suivant:

void chargementDonnees(int matricules[max_etudiants],char noms[max_etudiants][taille_chaine + 1], char prenoms[max_etudiants][taille_chaine + 1], char nomsCours[nb_cours_offerts][taille_chaine + 1],char *cours[max_etudiants][max_cours],float notes[max_etudiants][max_cours],int nbCours[max_etudiants], int *code_err)
{
int i=0,j=0;
char ch[taille_chaine + 1];
FILE *fichierprintf("Entrer le nom de fichier a charger:");
gets(ch);
printf("\n");
fichier=fopen(ch, "rt");
*code_err=erreur;
if(fichier==NULL)
{ printf("Erreur d'ouverture de Fichier!\n");
exit(1);
}

for(i=0;i<50;i+
{
fgets (ch , sizeof ch , fichier);

if(*ch!='$')
strcpy(nomsCours[i],ch);
else
break;
}

fclose(fichier);
*code_err=ok;
}Il me reste initialiser les autre et je sais pas comment a partir du $ .Est-ce que je continu a utiliser fgets ?
Comment je dois faire pour que

matricule1   va être stocker dans un tableau matricules
nom1    va être stocker dans un tableau nom
prenom1    va être stocker dans un tableau prenom
nb_cours1    va être stocker dans un tableau nbCours

puisque les 4 paramètres se trouve dans la même ligne(matricule1 nom1 prenom1 nb_cours1)

merci

<!-- / message -->

2 réponses

Cyr62110 Messages postés 65 Date d'inscription vendredi 10 février 2006 Statut Membre Dernière intervention 21 octobre 2009
2 déc. 2007 à 12:05
Bon déjà si tu utiliserais une structure pour stocker tout tes tableaux, on pourrait y voir plus clair.
typedef struct
{
int matricules[max_etudiants];
char noms[max_etudiants][taille_chaine + 1];
char prenoms[max_etudiants][taille_chaine + 1]; char nomsCours[nb_cours_offerts][taille_chaine+1];
char *cours[max_etudiants][max_cours];
float notes[max_etudiants][max_cours];
int nbCours[max_etudiants];
}Table;

Puis dans ton main :
Table table;
et ta fonction si elle doit renvoyer les donnée vers ta structure elle doit être defini avant ton code ou dans un .h:
void chargementDonnees (Table*,int*);

Sinon pour ton probléme, il y'as toujours le bon vieux fscanf(FILE*fp,char*format_string,...)
si mes souvenir son exact.
Ce qui donne :
fscanf(fichier,"%d %s %s %d",&matricules[i],&noms[i],&prenom[i],&nbCours[i]);
Aprés il y'as d'autre methode mais comme il n'y as pas d'espace dans ton code c'est la plus simple.
Bye
0
Neo_Fr Messages postés 653 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 10 novembre 2014 2
2 déc. 2007 à 18:56
Il est bizarre ton fichier.., pouquoi mettre un point apres cour2 alors qu'il reste un nombre indefini de cours apres, si c'est toi qui a creer ce format jte conseille de changer, tu pourrais separer tes etudiant par un meme tag de 2 ou 4 octets (plus facile a parser)
Et sinon c'est vraiment indispensable que tu utilise des structures parce que c vraiment degueu a lire..
Tu pourrais utiliser ce modele:
typedef struct _cours
{
char Nom[32];
float Note;
}COURS, *LPCOURS;

typedef struct _etudiant
{
DWORD Matricule;
char Nom[16];
char Prenom[16];
LPCOURS lpCours;
DWORD nbCours;
}ETUDIANT, *LPETUDIANT;

typedef struct _data
{
LPETUDIANT lpEtudiants;
LPCOURS lpCours;
LPBYTE Buffer;
DWORD BuffSize;
}DATA, *LPDATA;

Alloue autant de structure que tu veux avec HeapAlloc..
Et pis si tu avais un fichier en entier se serait + facile pr t'aider..

Neo_Fr
0
Rejoignez-nous