IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

probleme avec des archive en c++


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre r�gulier
    Inscrit en
    Juin 2006
    Messages
    8
    D�tails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 8
    Par d�faut probleme avec des archive en c++
    bonjour!
    j'ai un probleme mon programme stocke bien le premier fichier avec ce que je lui demande mais des le deuxieme il me dit qu'il existe deja dans stockage.bin, mais il n'y est pas et je vois pas l'erreur pouvait vous m'aider

    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
    90
    91
    92
    93
     
    void TEssai::RechercherNom()
    {
         //creation du fichier de stockage si enexistant
         FILE* pfic;
         pfic=fopen("stockage.bin","a");
         fclose(pfic);
     
     
     
         //ouverture de la fonction qui lit les fichier .zip
         struct dirent *lecture;     
         DIR* rep;
         rep=opendir("C:/Program Files/EasyPHP1-7/www/test");           //adresse ou se situe les fichier que je veux
     
     
         char* nom;
         int dateF;
         int dateeffacement;
         int heureeffacer;
         char* nomF;
         int length1;
     
         struct Essai e;                                                 //declaration de ma structure
     
     
         while(lecture=readdir(rep))                                    //tant qu'il y a des fichiers
         {
     
              bool fichier_trouver=false;
              nom=lecture->d_name;                                      //je lit leur nom
     
     
               //ouverture du fichier de stockage
     
     
              if(nom[0]!='.')                                           //je regarde si ce n'est pas . ou ..
              {
                        pfic=fopen("stockage.bin","r+");
                        cout<<"je suis dans le if"<<endl;
                        while((length1=fread(&e,sizeof(struct Essai),1,pfic))!=0)
                        {
     
                                   if((strcmp(nom,e.nom))==0)                            //si c'est bon je test voir si il existe pas deja dans ma 
                                                                                       //base de donnee
                                   {                                      
     
                                               fichier_trouver=true;
                                   }             
                        }
     
                      fclose(pfic);
                        if(fichier_trouver==false)                                            //si elle existe pas
                        {             
                                   pfic=fopen("stockage.bin","a");
     
                                               //structure pour avoir les informations de date par rapport a l'ordi
                                                 time_t rawtime;
                                                struct tm* timeinfo;
                                                 time(&rawtime);
                                                timeinfo=localtime(&rawtime); 
     
                                                     //stokage du nom du fichier
                                                 e.nom=nom;
                                                 //stockage de la date
                                                 e.date=(timeinfo->tm_mday);
                                                 //stockage de l'heure
                                                 e.heure=(timeinfo->tm_hour);
                                                 //traitement de la date pour creer la date d'effacement
                                                 dateeffacement= (timeinfo->tm_mday);
     
                                                 if((dateeffacement>0)&&(dateeffacement<28))
                                                 {
                                                         dateeffacement+=1;
                                                          e.dateAeffacer=dateeffacement;
                                                           fwrite(&e,sizeof(struct Essai),1,pfic);
                                                 }
                                                 else
                                                 {
                                                     dateeffacement=1;
                                                     e.dateAeffacer=dateeffacement;
                                                     fwrite(&e,sizeof(struct Essai),1,pfic);
                                                }  
                                       fclose(pfic); 
                      }
     
     
              }system("PAUSE");
     
         }
         closedir(rep);
     
    }

  2. #2
    R�dacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Par d�faut
    salut,

    c'est du C ton histoire, pas du C++.

  3. #3
    Expert confirm�
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par d�faut
    Si j'ai bien compris :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
      //stokage du nom du fichier
       e.nom=nom;
    nom est d�fini comme char * et a �t� initialis� par l'adresse du tableau contenant le nom (lecture->d_name). Ceci ne copie pas le nom , mais l'adresse du tableau contenant le nom.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
     fwrite(&e,sizeof(struct Essai),1,pfic);
    sauvegarde cette adresse (dont on se moque d'ailleurs) mais pas le nom.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
      if((strcmp(nom,e.nom))==0)         //si c'est bon je test ....
    Si (par miracle) cette adresse n'a pas chang� lorsqu'on lance le programme une deuxi�me fois, nom et e.nom d�signe le m�me tableau et le test est bon � tout coup!

    Il faut que e.nom soit un tableau de caract�res, et qu'avant de copier la structure, on COPIE le contenu du tableau lecture->d_name dedans.

  4. #4
    Membre r�gulier
    Inscrit en
    Juin 2006
    Messages
    8
    D�tails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 8
    Par d�faut
    je vois ce que tu veux dire mais j'arrive pas a le mettre en oeuvre.
    comment pourai je faire stp

  5. #5
    Membre r�gulier
    Inscrit en
    Juin 2006
    Messages
    8
    D�tails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 8
    Par d�faut
    c'est cette parti qui marche mal
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
                        while((length1=fread(&e,sizeof(struct Essai),1,pfic))!=0)          // tant que stockage n'est pas fini d'etre lu
                        {
                                   cout<<"coucou je cherche"<<endl;   
                                   cout<<"nom ="<<nom<<endl;
                                   cout<<"i avant le oui:"<<fichier_trouver<<endl;
                                   if((strcmp(nom,e.nom))==0)                                                                                                              //base de donnee
                                   {
                                       cout<<"nom trouver="<<e.nom<<endl;                                       
                                       cout<<"je suis dans i=1  "<<fichier_trouver<<endl;
                                               fichier_trouver=true;
                                   }             
                        }
    voyer vous l'erreur?

  6. #6
    Expert confirm�
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par d�faut
    struct Essai doit avoir un champ nom susceptible de stocker le nom. Par exemple, pour illustrer le probl�me (en style C mais d'autres solutions sont possibles et plus esth�tiques en C ou C++ et peuvent �tre discut�es ensuite) :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    struct Essai 
    {
    ...
      char nom[50];
    ...
    };
    au moment du stockage du nom du fichier, on copie la cha�ne dans ce champ
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    //stokage du nom du fichier
    strncpy(e.nom,nom,49);
    e.nom[49] = '\0';
    puis, plus tard
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    fwrite(&e,sizeof(struct Essai),1,pfic);

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Problème avec une archive tar
    Par sylsau dans le forum Shell et commandes GNU
    R�ponses: 6
    Dernier message: 16/12/2005, 09h57
  2. [FLASH MX] Probleme avec des liens.
    Par maxcmoi dans le forum Flash
    R�ponses: 2
    Dernier message: 12/11/2005, 11h11
  3. Probleme avec des socket !
    Par Ptimath44 dans le forum R�seau
    R�ponses: 11
    Dernier message: 31/10/2005, 18h11
  4. Probleme avec des pointeurs...
    Par barucca dans le forum C++
    R�ponses: 5
    Dernier message: 23/08/2005, 21h05
  5. Problemes avec des cellules vides
    Par arsgunner dans le forum ASP
    R�ponses: 7
    Dernier message: 14/06/2004, 08h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo