Bonjour, je dois extraire toutes les informations d'un fichier data que voici:
Pour parvenir a mes fins, j'ai utilisé la fonction fscanf, mais j'éprouve beaucoup de difficulté à bien arranger mes pointeurs. Présentement, mon programme ne veut mêmem plus s'excécuter.introduction_a_la_psychologie_de_l'enfant
sociologie_de_la_civilisation_egyptienne_antique
physique_quantique_I
physique_quantitque_II
chimie_organique
gestion_des_ressources_humaines
gestion_des_affaires
micro-economie
macro-economie
politique_exterieure_des_etats-unis_d'amerique
histoire_de_la_chine
biologie_cellulaire
introduction_a_l'astrophysique
programmation_I
programmation_II
introduction_aux_bases_de_donnees
bases_de_donnees_avancees
calcul_I
calcul_II
algebre_vectoriel_et_matriciel
resistance_des_materiaux
meta-physique
physique_des_solides
physique_des_fluides
informatique_theorique
introduction_a_la_logique_des_predicats
cryptographie
mecanique_classique
marketing_de_masse
histoire_de_la_revolution_francaise
$
302 Ali Muhammad 3
programmation_I 83.0
algebre_vectoriel_et_matriciel 77.0
physique_des_solides 45.0
403983 Roosevelt Theodore 4
politique_exterieure_des_etats-unis_d'amerique 59.0
micro-economie 69.0
biologie_cellulaire 78.0
introduction_a_la_psychologie_de_l'enfant 23.0
344882 DeGaulle Charles 1
histoire_de_la_revolution_francaise 99.0
9822 Bombardier Joseph-Armand 5
resistance_des_materiaux 88.0
marketing_de_masse 84.0
gestion_des_affaires 93.0
chimie_organique 49.0
meta-physique 54.0
43281 TseTung Mao 2
histoire_de_la_chine 98.0
introduction_a_la_logique_des_predicats 78.0
83372 Hogan Hulk 3
sociologie_de_la_civilisation_egyptienne_antique 46.0
introduction_a_la_psychologie_de_l'enfant 32.5
meta-physique 15.0
16723 Taylor Lawrence 1
biologie_cellulaire 76.0
28371 Johnson Magic 5
introduction_aux_bases_de_donnees 62.0
programmation_I 71.0
calcul_II 51.0
resistance_des_materiaux 89.0
chimie_organique 68.0
49228 Nicklaus Jack 3
physique_quantique_I 90.0
gestion_des_affaires 88.0
physique_des_solides 73.0
58192 Claus Santa 4
introduction_aux_bases_de_donnees 100.0
physique_quantique_I 100.0
gestion_des_ressources_humaines 100.0
marketing_de_masse 100.0
57211 Anderson Neo 3
meta-physique 81.0
programmation_II 95.0
cryptographie 100.0
48201 Brown Charlie 0
86661 Skywalker Luke 3
algebre_vectoriel_et_matriciel 59.0
physique_des_fluides 82.0
macro-economie 52.0
62171 Mouse Mickey 2
marketing_de_masse 100.0
histoire_de_la_chine 66.0
72314 Laurier Wilfrid 4
sociologie_de_la_civilisation_egyptienne_antique 73.0
politique_exterieure_des_etats-unis_d'amerique 78.0
macro-economie 89.0
meta-physique 54.0
65172 Pascal Blaise 3
meta-physique 80.0
physique_des_fluides 73.0
calcul_II 94.0
87654 Turing Alan 2
informatique_theorique 100.0
cryptographie 100.0
89675 VonNeuman John 3
introduction_a_la_psychologie_de_l'enfant 55.0
histoire_de_la_chine 87.0
bases_de_donnees_avancees 73.0
26781 Gates Bill 5
introduction_aux_bases_de_donnees 25.0
programmation_I 10.0
calcul_I 15.0
algebre_vectoriel_et_matriciel 29.0
marketing_de_masse 100.0
92102 Hanks Tom 2
politique_exterieure_des_etats-unis_d'amerique 77.0
introduction_a_la_logique_des_predicats 65.0
78213 Papas George 3
chimie_organique 88.0
histoire_de_la_revolution_francaise 79.0
sociologie_de_la_civilisation_egyptienne_antique 61.0
44982 Geffen David 4
sociologie_de_la_civilisation_egyptienne_antique 72.0
micro-economie 73.0
calcul_I 48.0
marketing_de_masse 91.0
34188 Spielberg Steven 1
programmation_I 81.0
87728 Lucas George 4
physique_quantique_I 63.0
histoire_de_la_chine 89.0
algebre_vectoriel_et_matriciel 75.0
meta-physique 80.0
19983 Kennedy John-Fitzgerald 3
politique_exterieure_des_etats-unis_d'amerique 93.0
macro-economie 86.0
introduction_aux_bases_de_donnees 66.0
77681 Boucher Maurice 2
sociologie_de_la_civilisation_egyptienne_antique 89.0
marketing_de_masse 79.0
67210 Lucas Eric 3
gestion_des_ressources_humaines 80.0
gestion_des_affaires 78.0
histoire_de_la_revolution_francaise 71.0
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89 #include <stdio.h> #include <string.h> #define MAX_ETUDIANTS 100 // #define TAILLE_CHAINE 50 // #define MAX_COURS 5 // #define NB_COURS_OFFERTS 50 typedef enum {FAUX, VRAI} bool; void chargementDonnees(int *matricules[], char *noms[][TAILLE_CHAINE+1], char *prenoms[][TAILLE_CHAINE+1], char *cours[][MAX_COURS], float *notes[][MAX_COURS],int *nbCours[],char *nomsCours[][TAILLE_CHAINE + 1]); int main() { int matricules[MAX_ETUDIANTS]; //tableau dentier qui contient le matricule de chaque étudiant inscrit char noms[MAX_ETUDIANTS][TAILLE_CHAINE + 1]; //tableau de chaînes de caractères qui contient le nom de chaque étudiant char prenoms[MAX_ETUDIANTS][TAILLE_CHAINE + 1]; //tableau de chaînes de caractères qui contient le prénom de chaque étudiant char* cours[MAX_ETUDIANTS][MAX_COURS]; //le tableau de pointeurs dun étudiant, chaque pointeur pointant sur le nom //du cours auquel létudiant est inscrit float notes[MAX_ETUDIANTS][MAX_COURS]; //le tableau qui contient la note de chaque cours pour chaque étudiant int nbCours[MAX_COURS]; //le nombre de cours auquel chaque étudiant est inscrit char nomsCours[NB_COURS_OFFERTS][TAILLE_CHAINE + 1]; //le tableau des noms des cours offerts par lUniversité int i; chargementDonnees(&matricules, noms, prenoms, cours, ¬es, &nbCours, nomsCours); //chargementDonnees(nomsCours); for(i=1;i<20;i++) { printf("%s\n", nomsCours[i]); } return 0; } void chargementDonnees(int *matricules[], char *noms[][TAILLE_CHAINE+1], char *prenoms[][TAILLE_CHAINE + 1], char *cours[][MAX_COURS], float *notes[][MAX_COURS], int *nbCours[], char *nomsCours[][TAILLE_CHAINE + 1]) { FILE *stream; int test; char *text2[80]; int etudiant = 1; // numero de l'étudiant int i; // pour la boucle int ccours = 1; //numero du cours bool bool_cours = VRAI; //identifie si l'on est dans la section des différents cours (liste de cours) stream = fopen("donneesEtudiants.dat", "r"); fscanf(stream, "%s", nomsCours[ccours]); while (bool_cours) //tant que le text est différent de $ { fscanf(stream, "%s", nomsCours[ccours]); if (nomsCours[ccours][0] == '$') bool_cours=FAUX; //si on atteint la ligne avec la valeur $ ccours++; } while (fscanf(stream, "%d %s %s %d", &matricules[etudiant], noms[etudiant], text2, &nbCours[etudiant]) != EOF) // tant qu'il y a des étudiants { printf("test: %d %d %d\n",etudiant, nbCours[etudiant], matricules[etudiant]); //printf("%d %s %s %d\n", matricules[etudiant], noms[etudiant], text2, nbCours[etudiant]); for(i=1; i<nbCours[etudiant]+1; i++) // on passe chaque cours du même étudiant { printf("%d %d\n",etudiant, i); //printf("%f\n",notes[etudiant][i]); fscanf(stream, "%s %f", noms[etudiant], notes[etudiant][i]); //fscanf(stream, "%s %f", noms[etudiant], ¬es[etudiant][i]); //printf("%s %f\n", noms[etudiant], notes[etudiant][i]); if (i > 10) break; } if (etudiant > 1) break; etudiant++; } fclose(stream); printf("test"); scanf("%d", &test); }
Si vous êtes en mesure de me dire ce qui va pas je serais très très reconnaissant! Je dois remettre mon travail dans 2 jours et je commence a désespéré haha . Comme dernière note, je dois absolument utilisé des pointeurs.
Partager