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 :

Problème d'ouverture de fichier en écriture


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 40
    Par défaut Problème d'ouverture de fichier en écriture
    Bonjour,

    Je souhaite ouvrir un fichier en modification, donc sans perdre son contenu.
    J'utilise la syntaxe suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    FILE* fileHandle;
    char fileName[256] = {'\0'};
    errno_t openResult;
     
    openResult = fopen_s(&fileHandle,filename,"r+");
    if(openResult != 0)
    {
      printf("code erreur : <%d>\n", openResult);
    }
    A l'exécution, le fichier n'arrive pas à être ouvert.
    La valeur de openResult vaut 13.
    Après recherches, cela veut dire Permission Denied.

    Or je suis sur Windows.
    Et j'appartiens au groupe Administrateur.

    ??

    Petite précision : avec l'option "r" seule, ça fonctionne.

    Autre question liée : pour modifier le fichier, quelle est le mode d'ouverture ?
    En effet, avec "a", l'aide dit que l'écriture se fait forcément en fin de fichier.

    Merci pour votre aide.

  2. #2
    Membre très actif
    Avatar de buggen25
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    554
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2008
    Messages : 554
    Par défaut fopen_s il falait qu'ils rajoutent un _s sinon Deprecated
    Hola!
    les types d'accès "r+", "w+", et "a+" autorisent la lecture et la modification

  3. #3
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 40
    Par défaut suite
    En fait je vais être plus précis.

    Je n'arrive pas à écrire dans mon fichier, mais pas à la fin? Je ne veux pas faire de append.

    En gros je n'arrive pas à faire des overwrite sur mon fichier.

    Comment faire ? fopen permet-il bien de le faire ?

    Merci.

  4. #4
    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
    As-tu au moins le droit d'écriture sur le fichier en question ?

    Et aussi, es-tu sûr qu'il n'est pas déjà ouvert ailleurs ? fopen_s() exige un accès exclusif quand il s'agit d'ouvrir un fichier en écriture. C'est d'ailleurs l'unique raison pour laquelle elle n'est pas complètement inutile...
    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.

  5. #5
    Membre très actif
    Avatar de buggen25
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    554
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2008
    Messages : 554
    Par défaut
    Je suis d'accord avec Medinoc
    Un "fclose" serait tres utile dans ce cas la, puisque le fichier permet la lecture

  6. #6
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 40
    Par défaut suite
    Citation Envoyé par Médinoc Voir le message
    As-tu au moins le droit d'écriture sur le fichier en question ?

    Et aussi, es-tu sûr qu'il n'est pas déjà ouvert ailleurs ? fopen_s() exige un accès exclusif quand il s'agit d'ouvrir un fichier en écriture. C'est d'ailleurs l'unique raison pour laquelle elle n'est pas complètement inutile...

    C'est sur WINDOWS.
    Quand je fais les propriétés du fichier, je vois que le groupe Administrateur a tous les droits dessus, et vu que j'en fais partie c'est bon.

    De plus le fichier n'est pas en lecture seule (case décochée).

    Dans le répertoire, j'arrive à créer des fichiers et à enregistrer les modifs donc je vois pas ...

    Et enfin personne d'autre que moi n'utilise le fichier.

  7. #7
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 472
    Par défaut
    Choses bêtes :

    - Comment remplis-tu fileName ?
    - Quel est le programme qui crée le fichier ?
    - Es-tu sûr que ton programme se finit bien entre deux essais, et que tu n'as pas de processus zombies qui s'accumulent quelque part, et dont le premier aurait revendiqué le fichier sans jamais le libérer ?

  8. #8
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 40
    Par défaut suite et fin
    Finalement je n'utilise plus fopen_s car le pb vient de là apparemment.
    J'utilise à la place fopen avec le mode "r+".

    Merci pour votre aide.

  9. #9
    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
    Donc, c'est bien un problème de conflit de partage.
    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. [VBA - Excel] Problème d'ouverture de fichier
    Par seiryujay dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/12/2006, 10h55
  2. [Système] Problème d'ouverture de fichier
    Par Neii Mad dans le forum Langage
    Réponses: 8
    Dernier message: 03/07/2006, 00h11
  3. Problème à l'ouverture de fichiers Word
    Par Asdorve dans le forum Word
    Réponses: 8
    Dernier message: 19/05/2006, 12h03
  4. Réponses: 5
    Dernier message: 05/05/2006, 15h08
  5. Réponses: 2
    Dernier message: 20/04/2006, 22h12

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