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++/CLI Discussion :

probleme pour écrire dans un fichier texte


Sujet :

C++/CLI

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 274
    Points : 56
    Points
    56
    Par défaut probleme pour écrire dans un fichier texte
    Bonjour,

    j'ai un serveur qui récupère des données et les écrit dans un fichier texte data.txt via la class ofstream, et ca marche très bien. Mais quand j'entre dans le fichier data.txt, que j'efface toutes les data dans le fichier, et ensuite réémet des données au serveur, le serveur inscrit des données totalement fausses dans le fichier (plein de 0, on dirait meme de l'hexa).

    j'ai remarqué que j'émet 40ko, et lorsque j'efface les data dans le fichier data.txt puis réémet des data sur le serveur, mon fichier fait 80ko de data au lieu de 40ko.

    Avez vous une idée de pourquoi ca fait ca. Est ce un probleme de curseur, car le serveur écrit à un endroit et ne sait pas que des données ont été effacé?

    voici mon code:
    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
     
    int main(int argc, char const *argv[])
    {
    	ofstream fichier("data.txt", ios::in | ios::trunc);
    	TcpServer socket(30000);  // numéro du port = 30000
    	string textRecu;
     
     
    	if(fichier){
     
    		while(1){
    			textRecu = socket.lire();
     
    			fichier<< textRecu << std::endl;
     
    			}
    }
    merci d'avance pour votre aide

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Pourquoi ios::in sur ton flux en écriture?
    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
    Membre du Club
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 274
    Points : 56
    Points
    56
    Par défaut
    oui, j'ai fait des tests j'ai du oublié de l'enlever car ios::out est mis par défaut.

    J'arrive via fichier.seekp(0) a placer mon curseur au début du fichier texte mais malheureusement j'écris par dessus mon texte Y'a t'il pas un moyen de se placer au début du fichier et lorsque j'écris, ca écrit avant le texte sans l'effacer?

  4. #4
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 565
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 565
    Points : 7 642
    Points
    7 642
    Par défaut
    Bonjour,

    Un fichier c'est comme une feuille de papier. Une fois que tu as écris, on ne peut pas ajouter des choses avant. On peut remplacer (et à condition que le remplacement ait la exactement la même longueur que ce qui est effacé.) On peut évidemment ajouter des choses à la fin du texte déjà écrit en utilisant ios::ate. Pour "corriger" un fichier, pas d'autres moyens que d'en écrire un autre quitte à la renommer à la fin.

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 069
    Points : 12 113
    Points
    12 113
    Par défaut
    On peut aussi lire le contenu du fichier, l'ajouter à la chaine que l'on veut insérer en début de fichier, rouvrir le fichier en écriture, et y déverser le résultat de la concaténation du préfixe et du contenu du fichier précédemment lu.

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/07/2009, 16h50
  2. Réponses: 20
    Dernier message: 27/06/2006, 17h42
  3. [DOS] Commande pour écrire dans un fichier texte
    Par Jeff87-01 dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 28/03/2006, 01h04
  4. Réponses: 3
    Dernier message: 21/03/2006, 13h12
  5. probleme d'ecriture dans un fichier texte
    Par azrael88370 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 24/01/2005, 17h33

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