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 :

ecrire a la fin d'une ligne d'un fichier


Sujet :

C++

  1. #1
    Membre actif
    Avatar de warubi
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 399
    Points : 204
    Points
    204
    Par défaut ecrire a la fin d'une ligne d'un fichier
    Bonjour ! Je crois que tout est dans la question. Merci d'avance !

  2. #2
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 282
    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 282
    Points : 11 036
    Points
    11 036
    Par défaut
    Il faut passer par un fichier intermédiaire

  3. #3
    Membre habitué Avatar de Rodrigue
    Inscrit en
    Août 2002
    Messages
    487
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 487
    Points : 157
    Points
    157
    Par défaut
    Je ne sais pas si j'ai mal compris la question (pourquoi devoir passer par un fichier intermédiaire!?).
    Tu ouvres le fichier avec un std::ifstream, de là tu te déplaces à la fin du fichier avec la méthode seekp(0,ios_base::end) (cf. http://www.cplusplus.com/reference/i...am/seekp.html), puis tu écris avec l'opérateur <<.

    Bonne journée!

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    pourquoi devoir passer par un fichier intermédiaire!?
    Parce que si on fait comme tu le suggères, on va écraser les données qui se trouvent après la position d'écriture. Pour insérer du texte il faut bien passer par un fichier ou tout du moins un buffer temporaire.

  5. #5
    Membre habitué Avatar de Rodrigue
    Inscrit en
    Août 2002
    Messages
    487
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 487
    Points : 157
    Points
    157
    Par défaut
    Je ne m'en étais jamais rendu compte lol
    Ce n'est quand même pas très bien fait (ouhla je sens que je vais me faire assassiner là )
    Quelqu'un pourrait m'expliquer pourquoi la fin du fichier est écrasée?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    std::fstream exemple;
    exemple.open("C:\\testfile.txt", std::ios_base::out | std::ios_base::trunc);
    exemple << "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    exemple.close();
     
    std::fstream file;
    file.open("C:\\testfile.txt", std::ios_base::in | std::ios_base::out);
    file.seekg(std::ios_base::end);
    file << "\n123456789\n";
     
    file.close();
    avec "ABCDEFGHIJKLMNOPQRSTUVWXYZ" écris dans le fichier testfile.txt, j'obtiens après exécution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    AB
    123456789
    PQRSTUVWXYZ
    \n
    Pourquoi cela commence à partir du troisième caractère (c qui est remplacé par \n)?

    Lorsque je met file.seekp(0,std::ios_base::end), là ça commence bien à partir de Z et ça remplit dans l'ordre inverse...

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    seekg c'est la position de lecture, seekp celle d'écriture.

  7. #7
    Membre habitué Avatar de Rodrigue
    Inscrit en
    Août 2002
    Messages
    487
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 487
    Points : 157
    Points
    157
    Par défaut
    Ok, merci beaucoup

Discussions similaires

  1. [VBS]Ecrire à la fin d'une ligne
    Par Mammy Potter dans le forum VBScript
    Réponses: 5
    Dernier message: 14/01/2013, 13h56
  2. script shell ecrire à la fin d'une ligne d'un fichier
    Par patricx dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 16/02/2012, 23h11
  3. Ecrire a la fin d'une ligne d'un fichier .txt
    Par Vince_14 dans le forum LabVIEW
    Réponses: 5
    Dernier message: 02/05/2011, 19h45
  4. Ecrire à la fin d'une ligne *antérieure* à la fin d'un fichier
    Par samsap31 dans le forum Entrée/Sortie
    Réponses: 8
    Dernier message: 07/08/2007, 17h51
  5. Comment détecter la fin d'une ligne en C ?
    Par radouane_as dans le forum Débuter
    Réponses: 10
    Dernier message: 08/06/2007, 18h13

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