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";
}