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

SL & STL C++ Discussion :

[C++] Problème avec ofstream


Sujet :

SL & STL C++

  1. #1
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut [C++] Problème avec ofstream
    Bonjour,

    Je travail sur un fichier d'une taille initiale X,
    Cette taille augmente au fur et à mesure de programme

    A chaque fois que je veux le modifier je me positionne en X (je ne veux pas toucher aux données qui se trouvent avant)

    Pour se faire j'utilise le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ofstream outfile ( strFichier.c_str(), ofstream::binary | ofstream::out );
     
    outfile.seekp( X );
    // ou
    // outfile.seekp( X, ios_base::beg );  ne change rien
     
    outfile.write((char *)donnees, tailleDonnees);
    Le problème est que avec cette méthode, qui me parait pourtant logique, les données du fichier ( avant la position X ) sont altérées par ce que j'écris.


    J'ai aussi essayé le code suivant qui lui fonctionne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ofstream outfile ( strFichier.c_str(), ofstream::binary | ofstream::app);
     
    outfile.write((char *)donnees, tailleDonnees);
    Mais qui ne correspond pas à mon besoin car je ne peux plus revenir à la position X...


    J'ai remplacé la première méthode (avec le seek) par l'équivalent C,a savoir des fopen, fread ... et fseek et cela marche très bien...


    Quelqu'un aurai-t-il une idée du problème ??


    Merci
    @+

  2. #2
    Membre régulier

    Inscrit en
    Août 2004
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 43
    Points : 114
    Points
    114
    Par défaut
    il se passe quoi, tout le début du fichier est écrasé ? seulement une partie ?
    quelle taille est écrasée... ?

  3. #3
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    Alors il semble que :

    - Le fichier fasse la bonne taille, à savoir : X + ce que j'ai écris

    - Le fichier a été comme vidé de son contenu, tout remis à 0... Il s'agit d'une image au format rvb brut, après appel de ma méthode, celle-ci devient toute noire (0 , 0 , 0)


    J'ai fait une tellp() juste avant le write il me donne la bonne position.

    Je passe à seekp un unsigned long.

    Compilo Visual c++ 2005 express + SDK

  4. #4
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Le flag out tout seul est equivalent a "w" pour fopen: il tronque.

    Je suppose que tu veux l'equivalent de "r+", c'est in|out.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Points : 1 745
    Points
    1 745
    Par défaut
    C'était bien ça
    Merci beaucoup.

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

Discussions similaires

  1. Problème avec ofstream et >>
    Par Pouknouki dans le forum Débuter
    Réponses: 11
    Dernier message: 07/08/2013, 14h46
  2. Problème avec Ofstream
    Par azeglaoui dans le forum SL & STL
    Réponses: 18
    Dernier message: 12/10/2009, 21h17
  3. problème avec ofstream
    Par rodgeurette dans le forum SL & STL
    Réponses: 4
    Dernier message: 18/07/2007, 14h02
  4. Problème avec ofstream et ios::app
    Par Clad3 dans le forum SL & STL
    Réponses: 8
    Dernier message: 07/01/2007, 12h10
  5. problème avec ofstream::write
    Par b4u dans le forum SL & STL
    Réponses: 3
    Dernier message: 01/06/2006, 14h17

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