Votre question

Charger un fichier dans un tableau

Tags :
  • Programmation
Dernière réponse : dans Programmation
6 Mai 2011 18:05:25

Bonjour,
comment charger un fichier(qui est sous forme d'un menu) dans un tableau en langage C
cdt

Autres pages sur : charger fichier tableau

a b L Programmation
6 Mai 2011 19:13:07

fopen + fread (ou fscanf) + fclose
m
0
l
6 Mai 2011 20:22:11

ça parait simpliste comme réponse. Mais si je veux afficher le contenu dans un tableau, voici le code source:

je suis bloqué au "10" et "11", c'est à dire charger dans un fichier puis l'afficher par la suite

  1. //Declaration des bibliothèques
  2. #include<stdio.h>
  3. #include<conio.h>
  4. #include<string.h>
  5. //Declaration des variables
  6. int choix,i,pos,M,pn,nbr,S;
  7. //Declaration d'une structure stagiaire
  8. struct stagiaire
  9. {
  10. int mat,note;
  11. char nom[20],prenom[20],filiaire[20];
  12.  
  13. };
  14. //Declaration d'un tableau de type stagiaire
  15. stagiaire T[50];
  16. void menu() //Liste des choix
  17. {
  18. printf("\n\n\t==================================== Menu ===================================\n\n");
  19. printf("\n 1- Ajouter stagiaire : ");
  20. printf("\n 2- Afficher stagiaires : ");
  21. printf("\n 3- Rechercher stagiaire : ");
  22. printf("\n 4- Afficher la liste des stagiaires inscrits dans une filiaire donnée:");
  23. printf("\n 5- Supprimer stagiaire : ");
  24. printf("\n 6- Modifier stagiaire : ");
  25. printf("\n 7- Afficher la moyenne des notes : ");
  26. printf("\n 8- Afficher les stagiaires ayant la moyenne supperieur a 10 : ");
  27. printf("\n 9- Afficher le nombre des stagiaires ayant la moyenne egale a 10 : ");
  28. printf("\n10- Charger le fichier dans un tableau: ");
  29. printf("\n11- Afficher le tableau:");
  30. printf("\n 12- Quitter : ");
  31. printf("\n \n Entrer votre choix : ");
  32. scanf("%d",&choix);
  33. }
  34. // Les Foctions De chaque choix
  35. void Ajouter_stag() //La fonction d'ajout des stagiaires
  36. {
  37. printf("\n La Saisie des informations sur le Stagiaire %d : \n ",pos+1);
  38. printf("\n Entrer le matricule du stagiaire : ");scanf("\n %d",&T[pos].mat);
  39. printf("\n Entrer le nom du stagiaire : ");scanf("\n %s",T[pos].nom);
  40. printf("\n Entrer le prenom du stagiaire : ");scanf("\n %s",T[pos].prenom);
  41. printf("\n Entrer la filiaire du stagiaire : ");scanf("\n %s",&T[pos].filiaire);
  42. printf("\n Entrer la note du stagiaire : ");scanf("\n %d",&T[pos].note);
  43. pos++;
  44. printf("\n Stagiaire Bien Ajoute");
  45. }
  46. void Afficher_stag() //La fonction d'affichage des stagiaires
  47. {
  48. for (i=0;i<=pos-1;i+=1)
  49.  
  50. {
  51. printf("\n Stagiaire %d :\n Matricule : %d\n Nom : %s\n Prenom : %s\n Filiaire : %s\n Note : %d\n",i+1,T[i].mat,T[i].nom,T[i].prenom,T[i].filiaire,T[i].note);
  52. }
  53. }
  54. void Rechercher_stag() //La fonction de recherche des stagiaires
  55. {
  56. printf("Entrer le matricule du stagiaire à rechercher : ");
  57. scanf("%d",&M);
  58. for (i=0;i<=pos-1;i+=1)
  59. {
  60. if(M==T[i].mat)
  61. {
  62. printf("\n %d %s %s %s %d",T[i].mat,T[i].nom,T[i].prenom,T[i].filiaire,T[i].note);
  63. }
  64. }
  65. }
  66. void afficher_filiaire() // La fonction d'affichage des filiaires
  67. {
  68. char fil[20];
  69. int res;
  70. printf("Entrer la filiaire :");
  71. scanf("%s",fil);
  72. printf("Les stagiaires sont:");
  73. for(i=0;i<pos;i++)
  74. {
  75. res=strcmp(fil,T[i].filiaire);
  76. if (res==0)
  77. {printf("\n %s %s",T[i].nom,T[i].prenom);}
  78. }
  79. }
  80.  
  81. void Supprimer_stag() //La fonction de suppression des stagiaires
  82. {
  83. int j;
  84. printf("\n Entrer le matricule du stagiaire a supprimer:");
  85. scanf("%d",&S);
  86. for(i=0;i<pos;i++)
  87. {
  88. if(S==T[i].mat)
  89. {
  90. for(j=i;j<pos-1;j++)
  91. {T[j]=T[j+1];}
  92. pos=pos-1;
  93. }
  94. }
  95. printf("\n stagiaire bien supprime");
  96. }
  97.  
  98. void modifier_stag() //La fonction de modification des stagiaires
  99. {
  100. printf("Entrer le matricule du stagiaire à modifier : ");
  101. scanf("%d",&M);
  102. for (i=0;i<=pos-1;i+=1)
  103. {
  104. if(M==T[i].mat)
  105. {
  106. printf("Saisir les nouveaux renseignements sur le stagiaire : ");
  107. printf("\n Entrer un nouveau matricule du stagiaire : ");scanf("\n %d",&T[i].mat);
  108. printf("\n Entrer un nouveau nom du stagiaire : ");scanf("\n %s",T[i].nom);
  109. printf("\n Entrer un nouveau prenom du stagiaire : ");scanf("\n %s",T[i].prenom);
  110. printf("\n Entrer une nouvelle filiaire du stagiaire : ");scanf("\n %s",T[i].filiaire);
  111. printf("\n Entrer une nouvelle note du stagiaire : ");scanf("\n %f",&T[i].note);
  112. printf("Renseignements du stagiaire Bien modifies : ");
  113. }
  114. }
  115. }
  116. void Afficher_moy() //La fonction qui affiche la moyenne des notes
  117. {
  118. float moy=0;
  119. for(i=0;i<20;i++)
  120. {moy=moy+T[i].note;}
  121. moy=moy/pos;
  122. printf("la moyenne des notes est:%f",moy);
  123. }
  124.  
  125. void Afficher_stag_moy_sup_10() //La fonction qui affiche les stagiaires ayant la moyenne supperieur a 10
  126. {
  127. printf("Les stagiaires ayant la moyenne supperieur a 10 : \n");
  128.  
  129. for (i=0;i<=pos-1;i+=1)
  130. {
  131. if(T[i].note>10)
  132. {
  133. printf("%s %s \n",T[i].nom,T[i].prenom);
  134. }
  135. }
  136.  
  137. }
  138.  
  139. void Afficher_stag_moy_egal_10() //La fonction qui affiche le nombre des stagiaires ayant la moyenne egale a 10
  140. {
  141. nbr=0;
  142. for (i=0;i<=pos-1;i+=1)
  143. {
  144. if(T[i].note==10)
  145. {
  146. nbr++;
  147. }
  148. }
  149. printf("Le nombre des stagiaires ayant la moyenne egale a 10 est : %d ",nbr);
  150. }
  151.  
  152. void charger_fichier()//La fonction qui charge un fichier dans un tableau
  153. {
  154. FILE *ecrire;
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167. void afficher_tab()// La fonction qui affiche le tableau{}
  168.  
  169. // Le programme principale
  170. main()
  171.  
  172. {
  173.  
  174. do
  175. {
  176.  
  177. menu();
  178. if(choix==1){Ajouter_stag();}
  179. if(choix==2){Afficher_stag();}
  180. if(choix==3){Rechercher_stag();}
  181. if(choix==4){afficher_filiaire();}
  182. if(choix==5){Supprimer_stag();}
  183. if(choix==6){modifier_stag();}
  184. if(choix==7){Afficher_moy();}
  185. if(choix==8){Afficher_stag_moy_sup_10();}
  186. if(choix==9){Afficher_stag_moy_egal_10();}
  187. if(choix==10){charger_fichier();}
  188. if(choix==11){afficher_tab();}
  189. }
  190.  
  191. while(choix!=12);
  192. getch();
  193. }

m
0
l
Contenus similaires
a b L Programmation
7 Mai 2011 11:24:47

Tu as regardé la doc de fopen et fclose ? parce que je n'en vois pas dans ton code.
m
0
l
7 Mai 2011 12:52:27

Justement je ne sais pas comment procéder???
est ce que dois je le déclarer en tete du programme ou bien dans une fonction indépendante(charger_tab)
J'ai lu la doc de fopen et fclose ,toutefois, je n'ai pas trouvé grand chose...
Pourriez vous me proposer une solution approximative...un déclic...pour passer car je suis bloqué!!!
m
0
l
a b L Programmation
8 Mai 2011 11:21:03

Tu n'as rien à déclarer, c'est une fonction standard déjà déclarée dans stdio.h
fopen retourne un FILE*, et prend en paramètre le nom du fichier à ouvrir et le mode d'ouverture (lecture (r pour read) ou écriture (w pour write)).
Exemple: FILE * f = fopen(tonfichier, "r");
Après tu testes si f est bien différent de NULL, car s'il est NULL c'est que l'ouverture du fichier s'est mal passée (par exemple une ouverture en écriture d'un fichier protégé en écriture).

Bref, tout ça est expliqué dans les doc, et tu trouves même des exemples facilement:
http://www.cplusplus.com/reference/clibrary/cstdio/fopen/
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS