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 :

[Répertoires] Erreur ouverture


Sujet :

C

  1. #1
    Membre éclairé Avatar de GyZmoO
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 428
    Par défaut [Répertoires] Erreur ouverture
    Salut a tous !
    Je rencontre un petit problème dans un prog écrit en C. Dans 3 fichiers texte se trouvent 3 chemins de répertoires. Je dois récupérer les 3 chemins dans le fichier
    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
     
      /* Les chemins de repTemoin et repMail sont contenus dans les fichiers C:\repTemoin , C:\repMail */
     
      adrMail = fopen("repMailFile", "r");
      adrTemoinSpam = fopen("repTemoinSpamFile", "r");
      adrTemoinNotSpam = fopen("repTemoinNotSpamFile", "r");
     
      if ((adrMail == NULL) || (adrTemoinSpam == NULL)|| (adrTemoinNotSpam == NULL))
        {
          perror("Fichiers adresses inaccessibles ! \n");
          return ECHEC_OUVERTURE_FICHIER;
        }
     
     
     
      adrMailString = malloc(sizeof(char) * BUFF_SIZE);
      adrTemoinSpamString = malloc(sizeof(char) * BUFF_SIZE);
      adrTemoinNotSpamString = malloc(sizeof(char) * BUFF_SIZE);
     
      if ((adrMailString == NULL) || (adrTemoinSpamString == NULL) || (adrTemoinNotSpamString == NULL))
        {
          perror("Erreur allocation chaine adresse ! \n");
          return ECHEC_ALLOC;
        }
     
      /* On récupère les adresses des répertoires au moyen de fgets */
     
      fgets(adrMailString, BUFF_SIZE, adrMail);
      fgets(adrTemoinSpamString, BUFF_SIZE, adrTemoinSpam);
      fgets(adrTemoinNotSpamString, BUFF_SIZE, adrTemoinNotSpam);
    Donc je précise que tout se passe bien ici, les chaines contiennent bien les chemins en question. Mais aprés ici, ça se gate :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
      /* On ouvre les 3 repertoires et on commence l'analyse */
     
      repTemoinSpam = opendir(adrTemoinSpamString);
      repTemoinNotSpam = opendir(adrTemoinNotSpamString);
      repMail = opendir(adrMailString);
     
      if ((repTemoinSpam == NULL) || (repTemoinNotSpam == NULL) || (repMail == NULL))
        {
          perror("Erreur ouverture répertoires ! \n");
          return ECHEC_OUVERTURE_REPERTOIRE;
        }
    Donc la j'obtiens systématiquement une erreur. Alors je précise j'ai essayé de mettre les chemins entièrement comme :
    C:\Documents and Settings\Mick\Bureau\T.E.R\Distance Kolmo\repMail

    ou juste ça

    repMail\

    car les répertoires en question se trouvent au même endroit que l'exécutable.
    Je précise je travaille sous win Xp avec code blocks et la console ressemble a ça :

    Erreur ouverture répertoires ! : No such file or directory
    Biensur je me suis pas planté sur les noms des répertoires, et les répertoires existent bien !

    Si vous voyez le soucis, n'hésitez pas
    Merci.

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    As-tu testé le contenu de tes chaîne comme adrTemoinSpamString et les deux autres ? Comment as-tu récupéré le nom des répertoires ? Du moins avec quelle fonction ? fgets ? As-tu remplacé le '\n' à la fin par un zéro de fin de chaîne ?
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par GyZmoO
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      adrMailString = malloc(sizeof(char) * BUFF_SIZE);
      adrTemoinSpamString = malloc(sizeof(char) * BUFF_SIZE);
      adrTemoinNotSpamString = malloc(sizeof(char) * BUFF_SIZE);
    En dehors de ce qu'a dit Frank H., à quoi ça sert d'allouer des tableaux de taille fixe ? Tu as l'intention de les réallouer ?

    Je rappelle que sizeof (char) vaut 1 par définition.

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    c'est normal que ça passe en erreur..

    Tu fais un fgets pour récupérer le nom du répertoire dans le fichier. Mais fgets n'élimine pas le '\n' à la fin de la ligne. C'est à toi de l'enlever.

    Donc ici tes noms de répertoire contiennent un '\n' à la fin...

  5. #5
    Membre éclairé Avatar de GyZmoO
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 428
    Par défaut
    Ahu vous êtes efficaces merci

    Donc pour répondre a vos questions :
    - Oui j'avais bien testé le contenu des chaines et non je n'avais pas enlevé le \n de fin de chaine ! (idiot inside)
    - Aprés si j'alloue des tableaux de taille fixe avec BUFF_SIZE c'est parce que BUFF_SIZE peut changer plus tard c'est pour ça

    En tout cas merci pour vos réponse !!!!!!! Vous me sauvez !

  6. #6
    Membre éclairé Avatar de GyZmoO
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 428
    Par défaut
    Donc j'ai cherché le '\n' de fin de chaine, et je l'ai remplacé par un '\0' mais ce coup ci, ca me met
    Erreur ouverture répertoires : No error
    ????

    [Edit] Mon code modifié

    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
     
      fgets(adrMailString, BUFF_SIZE, adrMail);
      fgets(adrTemoinSpamString, BUFF_SIZE, adrTemoinSpam);
      fgets(adrTemoinNotSpamString, BUFF_SIZE, adrTemoinNotSpam);
     
     
     
      printf("%s \n", adrMailString);
      printf("%s \n", adrTemoinSpamString);
      printf("%s \n", adrTemoinNotSpamString);
     
      while(adrMailString[debug] != '\n')
      {
          printf("%c", adrMailString[debug]);
          debug++;
      }
     
      adrMailString[debug] = '\0';
      debug = 0;
     
      while(adrTemoinSpamString[debug] != '\n')
      {
          printf("%c", adrTemoinSpamString[debug]);
          debug++;
      }
     
      adrTemoinSpamString = '\0';
      debug = 0;
     
      while(adrTemoinNotSpamString[debug] != '\n')
      {
          printf("%c", adrTemoinNotSpamString[debug]);
          debug++;
      }
     
      adrTemoinNotSpamString[debug] = '\0';
     
      /* On ouvre les 3 repertoires et on commence l'analyse */
     
      repTemoinSpam = opendir(adrTemoinSpamString);
      repTemoinNotSpam = opendir(adrTemoinNotSpamString);
      repMail = opendir(adrMailString);
     
      if ((repTemoinSpam == NULL) || (repTemoinNotSpam == NULL) || (repMail == NULL))
        {
          perror("Erreur ouverture répertoires ! \n");
          return ECHEC_OUVERTURE_REPERTOIRE;
        }

  7. #7
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par GyZmoO
    Donc j'ai cherché le '\n' de fin de chaine, et je l'ai remplacé par un '\0' mais ce coup ci, ca me met


    ????
    Le mieux serait de montrer ton code modifié non ?
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  8. #8
    Membre éclairé Avatar de GyZmoO
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 428
    Par défaut
    C'est pas faux j'ai mis le code plus haut !

  9. #9
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Pour supprimer un '\n':
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    char * p = strchr (adrMailString, '\n');
     
    if (p != NULL)
    {
       *p = 0;
    }
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  10. #10
    Membre éclairé Avatar de GyZmoO
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 428
    Par défaut
    Niquel ça marche ! Merci beaucoup !

  11. #11
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par GyZmoO
    Niquel ça marche ! Merci beaucoup !
    Ok n'oublie pas le tag
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur ouverture fichier
    Par Titus94120 dans le forum Excel
    Réponses: 3
    Dernier message: 17/06/2008, 18h23
  2. [VB2003][SQLSRV2000][CR] erreur ouverture report
    Par tigrou2405 dans le forum SDK
    Réponses: 1
    Dernier message: 26/05/2008, 11h06
  3. Réponses: 1
    Dernier message: 06/03/2008, 20h24
  4. Réponses: 3
    Dernier message: 30/05/2007, 21h47
  5. [erreur] ouverture d'un Popup
    Par baillador dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 07/06/2006, 15h48

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