les fichiers

les fichiers - C - Programmation

Marsh Posté le 13-03-2008 à 16:34:37    

Bonjour je dois créer un dossier de stockage et de gestion pour une entreprise pour l'école, seulement voila j'ai un problème avec mon ouverture et ma fermeture de fichier.
 
Voyez vous ce qui ne vas pas ??
 
Merci pour votre aide qui m'est tres precieuse !!
 
code :
 
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
 
FILE * fnumero=NULL;
 
do
{
 
 system("cls" );
 printf("\t\t1.  Ajout de stockages\n\n\t\t2.  Affichage séquentiel du fichier \n\n\t\t3.  Quitter \n" );
 scanf ("%d", &n);
 fnumero = fopen("A:\\Stockages.dat", "w" );
 system("cls" );
 
 switch (n)
 {  
 
  case 1:
 
         
   while (nproduit<100 && EncodeProduit(&produit[nproduit], numprod, nproduit))  
   {
    nproduit++;              
    system("cls" );
   }
          Indexation (produit, index, nproduit);
         
       
   break;
         
 
  case 2:
         
   z=-1;
   do
   {
         
    z++;
    AfficheProduit (produit, nproduit, z);       // 2eme fonction
         
         
    printf("Afficher le suivant ? (o/n) : " );
    fflush (stdin);
    scanf("%c", &enc2);
    system("cls" );  
   }
   while (enc2!='n' && z<nproduit-1);
         
 
                 break;
       
 }
     
}
while (n!=3);
 
fclose(fstockages);
 
}

Reply

Marsh Posté le 13-03-2008 à 16:34:37   

Reply

Marsh Posté le 13-03-2008 à 16:36:17    

j'ai oublier de preciser, le code envoyé n'est pas complet du tout, les variables sont toutes declarées, ... C'est au niveau de l'ouvertue et de la fermeture de fichier que j'ai des problèmes.
 
Merci beaucoup

Reply

Marsh Posté le 13-03-2008 à 16:46:04    

tu as quel  probleme ? quel message d'erreur parceque là il en manque plein du code. Quel fichier pose problème ?
fclose(fstockages);  ==> il sort d'ou lui ? fnumero tu l'ouvres mais tu t'en sers où ??

 

ps utilise des balises de code pour mettre le tiens, ça aide à lire parceque là sdur. (On indente à l'horizontal pas à la verticale ;p)


Message édité par rengzehn le 13-03-2008 à 16:48:02
Reply

Marsh Posté le 13-03-2008 à 16:53:59    

j'ai visual studio 6.0. ben j'ai pas de message d'erreur mais quand je l'execute, j'entre "1" pour entrer dans le premier menu ensuite j'aimerai sortir de ce sous menu, je tape "3" et la, il me met, dos4.exe a cesser de fonctionner. si j'enleve les lignes concernant les fichiers, ca va sans problème mais une fois que c'est ligne de code (fopen et fclose) sont ecrite, j'ai cette erreur la. fstockage est un deuxieme fichier, il faut modifier le FILE * fnumero=NULL par FILE * fstockages=NULL.
 
Voila

Reply

Marsh Posté le 13-03-2008 à 17:29:44    

Un passage par http://forum.hardware.fr/hfr/Progr [...] 0261_1.htm s'impose à l'avenir...
 
Donne le bon code, pas des copiers/collés steup parceque là c'est dur de comprendre, tu ouvres un fichier que tu n'utilises pas et t'en fermes un autre. Indentes le bien en utilisant des balises de code du forum. Merci.

Reply

Marsh Posté le 13-03-2008 à 18:11:27    

ok voila la totalité de mon code, mais comme je suis en trein de faire plein de changement dans mon code il y aurai des chose pas correct bein evidement mais j'aimerai comprendre pourquoi ca ne vas pas : voila le code mais sans les fonctions. Le code contiendra les appel des fonction, la declaration de la fonction mais pas le code de la fonction. Ici c'est inutile, il n'y en a pas besoin.... Voici le code :  
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
 
 
struct produit {    //declaration de la structure
 long NumProduit;
 char NomProduit[30];
 char UniteMesure[10];
 float Prix;
 char TypeProduit[20];
 int categorie;
   
};
 
 
struct ind {
 char NomProduit[30];
 long NumProduit;
 long Posi;
 
};
 
struct Stockage {
 long NumProduit;
 long NumDepot;
 long QuantiteStockee;
 
};
 
int EncodeProduit (struct produit *, long [], int); // Toutes les fonctions utilisées
short RechercheNumProd (int, int, long []);
void InsertionNumProd (int, long[], int);
void AfficheProduit (struct produit[], int, int);
void Indexation (struct produit[], struct ind [], int);
void AfficheIndex (struct produit [], struct ind [], int, int);
void Recherche (struct produit [], struct ind [], int, char[]);
//void InsertionInd (
//void SuppressionInd (
 
 
int main ()
 
{
 int nproduit=0;      // variables declarées
 int i, n, z, rep;
 long numprod[100];
 char enc2, rech[30];
 FILE * fnumero=NULL;
 FILE * fstockages=NULL;
 
 struct ind index[100];
 struct produit produit[100];
 
 
 i=0;
 do
 {
  system("cls" );
  printf("\t\t\t\tMenu\n\n\n\t\t1.  Produits \n\n\t\t2.  Stockages \n\n\t\t3.  Quitter\n" );
  scanf("%d", &rep);
  system("cls" );
 
  switch (rep)
  {
   case 1:
     
     do
     {
 
      system("cls" );
      printf("\t\t1.  Ajout de produits en fin de fichier\n\n\t\t2.  Afficher les caractéristiques des produits \n\n\t\t3.  Afficher les caractéristiques des produits suivant l'index \n\n\t\t4.  Rechercher un produit \n\n\t\t5.  Quitter \n" );
      scanf ("%d", &n);
      fnumero = fopen("A:\\Produits.dat", "w" );
      system("cls" );
 
      switch (n)
      {  
 
       case 1:
 
         
        while (nproduit<100 && EncodeProduit(&produit[nproduit], numprod, nproduit))  
        {
         nproduit++;                
         system("cls" );
        }
        Indexation (produit, index, nproduit);
         
       
        break;
         
 
       case 2:
         
        z=-1;
        do
        {
         
         z++;
         AfficheProduit (produit, nproduit, z);      
         
         
         printf("Afficher le suivant ? (o/n) : " );
         fflush (stdin);
         scanf("%c", &enc2);
         system("cls" );  
 
        }
        while (enc2!='n' && z<nproduit-1);
         
 
        break;
       
       case 3:
 
         
        z=-1;
        do
        {
         z++;
         AfficheIndex (produit, index, nproduit, z);  
     
         printf("Afficher le suivant ? (o/n) : " );
         fflush (stdin);
         scanf("%c", &enc2);
         system("cls" );
        }
        while(enc2!='n' && z<nproduit-1);
         
        break;
       
       case 4:
 
        printf("Veuillez entrer le nom du produit recherché : " );
        fflush (stdin);
        gets (rech);
 
        Recherche (produit, index, nproduit, rech);
 
         
        break;
      }
     
     }
     while (n!=5);
 
     fclose(fnumero);
 
     break;
 
   case 2:
     
     do
     {
 
      system("cls" );
      printf("\t\t1.  Ajout de stockages\n\n\t\t2.  Affichage séquentiel du fichier \n\n\t\t3.  Quitter \n" );
      scanf ("%d", &n);
      fnumero = fopen("A:\\Stockages.dat", "w" );
      system("cls" );
 
      switch (n)
      {  
 
       case 1:
 
         
        while (nproduit<100 && EncodeProduit(&produit[nproduit], numprod, nproduit))  
        {
         nproduit++;                  
         system("cls" );
        }
        Indexation (produit, index, nproduit);
         
       
        break;
         
 
       case 2:
         
        z=-1;
        do
        {
         
         z++;
         AfficheProduit (produit, nproduit, z);        
         
         
         printf("Afficher le suivant ? (o/n) : " );
         fflush (stdin);
         scanf("%c", &enc2);
         system("cls" );  
 
        }
        while (enc2!='n' && z<nproduit-1);
         
 
        break;
       
      }
     
     }
     while (n!=3);
 
     fclose(fstockages);
   
     break;
  }
 }
 while (rep!=3);
 
 if (rep==3)
 {
  printf("\n\t\t\tFin du programme... \n\n\n\tA bientot. " );
 }
 
 system("pause" );
}
 
Merci pour votre aide !

Reply

Marsh Posté le 13-03-2008 à 19:56:24    

balises code :o


---------------
Töp of the plöp
Reply

Marsh Posté le 14-03-2008 à 17:11:23    

gets c'est le mal.
 
Tu fermes un fichier que tu n'as pas ouvert. (fstockages)
Si y'avait des balises de code on saurait où exactement est le problème mais c'est assez illisible.
Vérifie tes ouvertures et fermetures. Avec tes boucles, tu ouvres plusieurs fois un fichier sans le fermer ou inversement... et mets des balises de code.


---------------
deluser --remove-home ptitchep
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed