Exercice

Soit un fichier de données identiques à celui de l'exercice précédent.

Écrire une procédure main qui :

  1. lise le fichier en mémorisant son contenu dans un tableau de structures, chaque structure permettant de mémoriser le contenu d'une ligne (nom, article, nombre et prix).
  2. parcoure ensuite ce tableau en imprimant le contenu de chaque structure.
#include <stdio.h>

/******************************************************/
/*                       main                         */
/******************************************************/
int main(void)
{
FILE * fi;
struct commande
   {
   char nom[80];
   char article[80];
   int nombre,prix;
   };

#define nb_com 100
struct commande tab_com[nb_com];   /*   tableau des commandes   */

int i;   /* index dans tab_com   */
int ilast;   /* dernier index valide dans tab_com après remplissage */

if ((fi = fopen("exer7.data","r")) == NULL)
   printf("Impossible d'ouvrir le fichier exer7.data\n");
else
   {
   /*   boucle de lecture des commandes   */
   /*   -------------------------------   */
   i = 0;

   while(i < nb_com && fscanf(fi,"%s %s %d %d",
                             tab_com[i].nom,
                             tab_com[i].article,
                             &tab_com[i].nombre,
                             &tab_com[i].prix) != EOF)
      i++;   /*   corps du while */

   if (i >= nb_com)
      printf("le tableau tab_com est sous-dimentionné\n");
   else
      {
      /*   impression des commandes mémorisées   */
      /*   -----------------------------------   */
      ilast = i - 1;
   
      for (i = 0; i <= ilast; i++)
         printf("%s %s %d %d\n", tab_com[i].nom, tab_com[i].article,
                                 tab_com[i].nombre, tab_com[i].prix);

      fclose(fi);
      }
   }
return 0;
}



Matthieu Moy 2017-02-08