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 :

Savoir pourquoi je n'arrive pas à ouvrir un fichier.


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Septembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 11
    Par défaut Savoir pourquoi je n'arrive pas à ouvrir un fichier.
    Bonjour, je succite votre aide pour un problème très simple mais pour lequel je n'ai trouver aucune réponse dans le FAQ ni d'autres postes :

    Je tente d'ouvrir un fichier en lecture / écriture en c++ :

    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
     
    fstream f("/home/md35/resultat_promip/resultat1.txt", ios_base::in | ios_base::out | ios_base::app);
        cout << f.fail() << endl;
        if (f.is_open()) {
            for (count_i = 0; count_i < 25; count_i++) {
                cout << "val " << count_i << " :\t";
                // f << "val " << count_i << " :\t";
                for (count_j = 0; count_j < max_itteration_identique; count_j++) {
                    cout << val_reg[count_j][count_i] << "\t";
                    // f << val_reg[count_j][count_i] << "\t";
                }
                cout << endl;
                // f << endl;
            }
            f.close();
        }
    F.close() retourne false. Je n'ai trouver aucun moyen qui me permette de savoir pourquoi il n'ouvre pas le fichier ! fichier inexistant, manque de droit, etc ... qui me permette de comprendre ce qui se passe !

    Exist-il une fonction qui permette de savoir pourquoi le fichier n'est pas ouvert ? Un code d'erreur que l'on puisse interpréter par exemple !

    Merci pour votre aide.

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Dans l'état actuel, ton code n'écrit rien du tout dans le fichier.
    Quel est le symptôme exact de l'erreur ?

    PS: Je n'utilise jamais les std::fstream, car je n'ouvre jamais un fichier en lecture et écriture en même temps. Je préfère les std::ifstream et std::ofstream...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    J'ai un doute.
    Une ouverture foirée ne positionnerait pas errno des fois ?
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  4. #4
    Membre habitué
    Inscrit en
    Septembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 11
    Par défaut
    Citation Envoyé par Luc Hermitte Voir le message
    J'ai un doute.
    Une ouverture foirée ne positionnerait pas errno des fois ?
    J'avoue là j'ai besoin de plus d'explication

  5. #5
    Membre habitué
    Inscrit en
    Septembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 11
    Par défaut
    Tout ce qui est dans ma clause if(f.is_open) n'est jamais excécuté.
    L'affichage dans ma fenêtre d'erreur de f.fail indique 1 c'est à dire echec d'ouverture du fichier. Mais je ne sais pas pourquoi il échoue ! Le fichier existe bien, le chemin est un chemin absolue, alors je trouve pas le problème !

    p.s. : Je travail dans un environnement Linux, j'ai mis tous les droits sur le fichier en question pour être tranquille.

    J'aurais aimé avoir des indications supplémentaires sur la source du problème :
    - chemin inexistant,
    - permission denied en ecriture,
    - ...
    Mais je n'ai trouver aucune fonction qui me donne ces indications.

  6. #6
    screetch
    Invité(e)
    Par défaut
    tu peux essayer le meme code en C avec fopen, puis tester le resultat, et donner l'erreur en utilisant la fonction
    perror("Erreur : ");

  7. #7
    Membre habitué
    Inscrit en
    Septembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 11
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Dans l'état actuel, ton code n'écrit rien du tout dans le fichier.
    Quel est le symptôme exact de l'erreur ?

    PS: Je n'utilise jamais les std::fstream, car je n'ouvre jamais un fichier en lecture et écriture en même temps. Je préfère les std::ifstream et std::ofstream...
    Oui dans le code que je donne j'ai mis les ecritures en commentaire, donc l'ouverture du fichier n'est pas très utile ! Mais oublions les comentaires. En faite, je fait un teste pour savoir si le fichier est ouvert, et il ne rentre pas dedans, c'est comme cela que je détecte le problème.

    J'ai essayer avec des fichiers en lecture seule, mais j'ai exactement le même résultat.
    Prenons donc en compte le code suivant :
    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
     
     
    ofstream f("/home/md35/resultat1.txt", ios_base::out | ios_base::app);
        cout << f.fail() << endl;
        if (f.is_open()) {
            for (count_i = 0; count_i < 25; count_i++) {
                cout << "val " << count_i << " :\t";
                f << "val " << count_i << " :\t";
                for (count_j = 0; count_j < max_itteration_identique; count_j++) {
                    cout << val_reg[count_j][count_i] << "\t";
                    f << val_reg[count_j][count_i] << "\t";
                }
                cout << endl;
                f << endl;
            }
            f.close();
        }

  8. #8
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Oui, je vois ton code.
    Quels sont les symptômes EXACTS d'échec avec ce code-là ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/10/2009, 11h52
  2. je n'arrive pas à ouvrir un fichier
    Par sakura.haruno dans le forum C
    Réponses: 4
    Dernier message: 24/11/2007, 14h52
  3. Réponses: 18
    Dernier message: 28/08/2007, 11h56
  4. Je n'arrive pas à ouvrir un fichier Excel
    Par Subkill dans le forum VBScript
    Réponses: 4
    Dernier message: 30/01/2007, 21h40
  5. Je n'arrive pas à ouvrir un fichier pdf
    Par tinwul dans le forum Access
    Réponses: 13
    Dernier message: 06/06/2006, 12h56

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