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

Visual C++ Discussion :

Probleme d'écriture dans un fichier deja existant


Sujet :

Visual C++

  1. #1
    Membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Avril 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Avril 2008
    Messages : 71
    Points : 48
    Points
    48
    Par défaut Probleme d'écriture dans un fichier deja existant
    Bonjour,
    voila mon probleme, je possede un fichier texte dans lequel sont rangées des données. Avec le programme ci-dessous j'enregistre les données qui m'interesse. Cette partie fonctionne trés bien mais quand je veux modifié le fichier texte, je me place sur l'octet ou je veux changer ma donnée et je la remplace. Le programme compile et s'execute sans probleme mais dans le fichier texte, au lieu de changer juste le mote que je veux je me retrouve avec plein de symbole, ma donnée et rien.
    Si quelqu'un a une explication et une solution je lui en serai reconnaissant.
    Merci.

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
     
    #include <iostream>
    #include <string>
    #include <fstream>
    using namespace std;
     
    const int nbdonnees = 66; //constante du nombre de donnees à recuperer
    string tabdonnees[nbdonnees]; //tableau servant à ranger mes donnees
    string tabvaleur[nbdonnees]; //tableau dans lequel seront rangées les valeurs des données
    void RangerDonnees(); //procedure qui rempli le tableau
    void EnregistrerDonnees();
    string chaine1;
     
    int main()
    {
     
    		int i =1; //indice de parcours du tableau où sont rangé les données du fichier matlab
    		string mot;
    		string chaine;
     
    		RangerDonnees();
    		ifstream fichier("donnees.m", ios::in);  // on ouvre en lecture;
            if(fichier)  // si l'ouverture a fonctionné
            {
    			fichier >> mot; // on lit le premier mot du fichier
    			while(i != nbdonnees) //tant que l'on a pas recuperer toutes les valeurs
    			{
    				while(mot != tabdonnees[i] ) // tant que le mot est different du mot du tableau
    				{			
    					fichier >> mot; // on lit le mot suivant
    				}
    				fichier.seekg(2, ios::cur); //on se place sur la valeur à recuperer
    				fichier >> chaine;	//on lit la valeur
    				tabvaleur[i] = chaine; // on range la valeur dans le tableau
    				i++; //on passe à la donnee suivante
    			}
    			fichier.close();
            }
    		else
    		{        
    			cerr << "Impossible d'ouvrir le fichier1 !" << endl;
    		}
    		ofstream fic("test.txt", ios::out | ios::trunc);  // on ouvre en ecriture
    		if(fic)  // si l'ouverture a fonctionné
            {
    			i=1;
    			while(i != nbdonnees)
    			{
    				fic << tabdonnees[i]<< " = ";   //on ecrit dans test.txt
    				fic << tabvaleur[i] << endl; 
    				i++;
    			}
    			fic.close();
    		}
    		else
    		{        
    			cerr << "Impossible d'ouvrir le fichier2 !" << endl;
    		}
    		EnregistrerDonnees();
    }
     
    void EnregistrerDonnees()
    {
     
    		int i =1; //indice de parcours du tableau où sont rangé les données du fichier matlab
    		string mot;
    		int position;
     
     
    		cout << "entrez le nouvelle valeur" << endl;
    		cin >> chaine1 ;
    		ifstream fichier("donnees1.m",  ios::in);  // on ouvre en lecture
    		if(fichier)  // si l'ouverture a fonctionné
            {
    			fichier >> mot; // on lit le premier mot du fichier
    			while(mot != tabdonnees[1] ) // tant que le mot est different du mot du tableau
    			{			
    				fichier >> mot; // on lit le mot suivant
    			}
    			fichier.seekg(2, ios::cur); //on se place sur la valeur à recuperer
    			position = fichier.tellg();
    			//i++; //on passe à la donnee suivante
     
    			fichier.close();
    			ofstream fichier("donnees1.m", ios::out);  // on ouvre en ecriture;
    			if(fichier)  // si l'ouverture a fonctionné
    			{
    				fichier.seekp(position, ios::beg);
    				fichier << chaine1;	//on écrit la valeur
    				tabvaleur[i] = chaine1; // on range la valeur dans le tableau
    			}
    			fichier.close();
    		}
    		else
    		{        
    			cerr << "Impossible d'ouvrir le fichier1 !" << endl;
    		}
    		ofstream fic("test.txt",ios::out | ios::trunc);  // on ouvre en ecriture
    		if(fic)  // si l'ouverture a fonctionné
            {
    			i=1;
    			while(i != nbdonnees)
    			{
    				fic << tabdonnees[i]<< " = ";   //on ecrit dans test.txt
    				fic << tabvaleur[i] << endl; 
    				i++;
    			}
    			fic.close();
    		}
    		else
    		{        
    			cerr << "Impossible d'ouvrir le fichier2 !" << endl;
    		}
    }
     
    void RangerDonnees()
    {
    		tabdonnees[1] = "type_assemblage";
    		tabdonnees[2] = "type_bague";
    		tabdonnees[3] = "Nombre_de_pistes";
    		tabdonnees[4] = "type_element_roulant";
    		tabdonnees[5] = "E_bague";
    }

  2. #2
    Membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Avril 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Avril 2008
    Messages : 71
    Points : 48
    Points
    48
    Par défaut J'ai trouvé
    Je me répond à moi-même et aussi de maniere à ce que d'autres personnes puisse connaître l'astuce si ils sont dans le même cas que moi.

    Pour faciliter l'écriture il suffit déjà d'ouvrir le fichier en lecture et écriture de la maniere suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fstream fichier("fichier",  ios::in | ios::out);
    ensuite vous vous déplacez jusqu'à l'emplacement qui vous interesse et vous ecrivez.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    fichier >> mot; // on lit le premier mot du fichier
    			while(mot != tabdonnees[1] ) // tant que le mot est different du mot du tableau
    			{			
    				fichier >> mot; // on lit le mot suivant
    			}
    			fichier.seekg(2, ios::cur); //on se place sur la valeur à recuperer
    			fichier << chaine1;	//on écrit la valeur
    voila j'espere que ça servira.
    A++

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

Discussions similaires

  1. Ajouter des objets dans un fichier deja existant
    Par schine dans le forum Persistance des données
    Réponses: 1
    Dernier message: 31/01/2013, 01h42
  2. Réponses: 4
    Dernier message: 26/05/2009, 09h15
  3. écriture dans un fichier ini deja existant
    Par azräel dans le forum VB.NET
    Réponses: 1
    Dernier message: 30/04/2009, 14h40
  4. Probleme d'écriture dans un fichier
    Par Hew dans le forum MATLAB
    Réponses: 4
    Dernier message: 22/09/2008, 19h02
  5. Probleme d'ecriture dans un fichier en mode Text
    Par bbozet dans le forum C++Builder
    Réponses: 3
    Dernier message: 14/01/2004, 13h46

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