Bonjour à tous,
Voilà, je débute dans la programmation en C++ et on me demande de comparer les lignes de 2 fichiers et de ressortir dans un fichier les lignes qui ont changées, qui sont en plus.
Voici déjà mon code, qui permet d'ouvrir les deux fichiers en question, de récupérer deux colonnes de ces fichiers (fichier.csv sous forme de colonne) et d'écrire ces colonnes dans deux fichier .txt differents.
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164 // Tri Titres-Tarifs.cpp*: définit le point d'entrée pour l'application console. // //////////////////////////////////////////////////////////////////////////////////////////////// /// Travail demandé: /// /// /// /// Ecrire un programme en C/C++ qui permettrait de, tout dabord trier les titres des /// /// magazines par ordre alphabetique, avec leur nombre et le total de leurs tarifs. /// /// Il faudra ensuite faire la moyenne de ces tarifs pour chaque magazines. /// /// /// //////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////// /// Bibliothèques /// ///////////////////// #include <stdafx.h> #include <string> #include <fstream> #include <iostream> #include <sstream> #include <cassert> using namespace std; //////////////////////////////// /// Déclaration de Variables /// //////////////////////////////// string colonne1; string colonne2; string colonne3; string colonne4; string colonne5; string colonne6; string colonne7; string colonne8; string colonne_1; string colonne_2; string colonne_3; string colonne_4; string colonne_5; string colonne_6; string colonne_7; string colonne_8; /////////////////////////// /// Programme Principal /// /////////////////////////// int _tmain(int argc, _TCHAR* argv[]) { // Ouverture du fichier 20090727-TABLES_EDI.csv en lecture. ifstream fichier1("C:\\Documents and Settings\\bastien\\Bureau\\Offres - Tables EDI Excel\\20090727-TABLES_EDI.csv"); if ( fichier1.is_open ( ) == false ) // Test de l'ouverture du fichier1. { cout << "Erreur lors de l'ouverture du fichier 20090727-TABLES_EDI.csv" << endl; assert ( false ); return -1; } // Ouverture du fichier Ecriture du fichier2.txt en écriture. ofstream fichier2("C:\\Documents and Settings\\bastien\\Bureau\\Ecriture du fichier2.txt"); if ( fichier2.is_open ( ) == false ) // Test de louverture du fichier2 { cout << "Erreur lors de l'ouverture du fichier Ecriture du fichier2" << endl; assert ( false ); return -1; } string ligne; // variable contenant chaque ligne lue // cette boucle s'arrête dès qu'une erreur de lecture survient while ( getline( fichier1, ligne ) ) { getline( fichier1, colonne1, ';' ); //cout << colonne1 << endl; getline( fichier1, colonne2, ';' ); //cout << colonne2 << endl; getline( fichier1, colonne3, ';' ); //cout << colonne3 << endl; getline( fichier1, colonne4, ';' ); //cout << colonne4 << endl; getline( fichier1, colonne5, ';' ); //cout << colonne5 << endl; getline( fichier1, colonne6, ';' ); //cout << colonne6 << endl; getline( fichier1, colonne7, ';' ); //cout << colonne7 << endl; getline( fichier1, colonne8); //cout << colonne8 << endl; cout << colonne1<< "\t" << colonne4 << endl; fichier2 << colonne1 << "\t"<< colonne4 << endl; // On écrit les deux colonnes qui nous intérresses. } // Ouverture du fichier 20090727-TABLES_EDI.csv en lecture. ifstream fichier3("C:\\Documents and Settings\\bastien\\Bureau\\Offres - Tables EDI Excel\\20090731-TABLES_EDI.csv"); if ( fichier3.is_open ( ) == false ) // Test de l'ouverture du fichier3. { cout << "Erreur lors de l'ouverture du fichier 20090731-TABLES_EDI.csv" << endl; assert ( false ); return -1; } // Ouverture du fichier Ecriture du fichier4.txt en écriture. ofstream fichier4("C:\\Documents and Settings\\bastien\\Bureau\\Ecriture du fichier4.txt"); if ( fichier4.is_open ( ) == false ) // Test de louverture du fichier4 { cout << "Erreur lors de l'ouverture du fichier Ecriture du fichier4" << endl; assert ( false ); return -1; } string ligne1; // variable contenant chaque ligne lue // cette boucle s'arrête dès qu'une erreur de lecture survient while ( getline( fichier3, ligne1 ) ) { getline( fichier3, colonne_1, ';' ); //cout << colonne1 << endl; getline( fichier3, colonne_2, ';' ); //cout << colonne2 << endl; getline( fichier3, colonne_3, ';' ); //cout << colonne3 << endl; getline( fichier3, colonne_4, ';' ); //cout << colonne4 << endl; getline( fichier3, colonne_5, ';' ); //cout << colonne5 << endl; getline( fichier3, colonne_6, ';' ); //cout << colonne6 << endl; getline( fichier3, colonne_7, ';' ); //cout << colonne7 << endl; getline( fichier3, colonne_8); //cout << colonne8 << endl; cout << colonne_1<< "\t" << colonne_4 << endl; fichier4 << colonne_1 << "\t"<< colonne_4 << endl; // On écrit les deux colonnes qui nous intérresses. } return 0; }
Mon problème est désormais de comparer ces deux fichiers entre eux. :s
J'ai pensé mettre le contenu des deux fichiers dans deux tableaux différents et ensuite comparer les tableaux entre eux, mais mon code ne fonctionne pas. Le compilateur me renvoit l'erreur "Erreur 1 error C2059: erreur de syntaxe*: ']' ".
Voici le code (Changement uniquement à la fin)
J'espere avoir été assez précis dans ce que je dis et que vous pourrez m'aider.
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178 // Tri Titres-Tarifs.cpp*: définit le point d'entrée pour l'application console. // //////////////////////////////////////////////////////////////////////////////////////////////// /// Travail demandé: /// /// /// /// Ecrire un programme en C/C++ qui permettrait de, tout dabord trier les titres des /// /// magazines par ordre alphabetique, avec leur nombre et le total de leurs tarifs. /// /// Il faudra ensuite faire la moyenne de ces tarifs pour chaque magazines. /// /// /// //////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////// /// Bibliothèques /// ///////////////////// #include <stdafx.h> #include <string> #include <fstream> #include <iostream> #include <sstream> #include <cassert> using namespace std; //////////////////////////////// /// Déclaration de Variables /// //////////////////////////////// string colonne1; string colonne2; string colonne3; string colonne4; string colonne5; string colonne6; string colonne7; string colonne8; string colonne_1; string colonne_2; string colonne_3; string colonne_4; string colonne_5; string colonne_6; string colonne_7; string colonne_8; /////////////////////////// /// Programme Principal /// /////////////////////////// int _tmain(int argc, _TCHAR* argv[]) { // Ouverture du fichier 20090727-TABLES_EDI.csv en lecture. ifstream fichier1("C:\\Documents and Settings\\bastien\\Bureau\\Offres - Tables EDI Excel\\20090727-TABLES_EDI.csv"); if ( fichier1.is_open ( ) == false ) // Test de l'ouverture du fichier1. { cout << "Erreur lors de l'ouverture du fichier 20090727-TABLES_EDI.csv" << endl; assert ( false ); return -1; } // Ouverture du fichier Ecriture du fichier2.txt en écriture. ofstream fichier2("C:\\Documents and Settings\\bastien\\Bureau\\Ecriture du fichier2.txt"); if ( fichier2.is_open ( ) == false ) // Test de louverture du fichier2 { cout << "Erreur lors de l'ouverture du fichier Ecriture du fichier2" << endl; assert ( false ); return -1; } string ligne; // variable contenant chaque ligne lue // cette boucle s'arrête dès qu'une erreur de lecture survient while ( getline( fichier1, ligne ) ) { getline( fichier1, colonne1, ';' ); //cout << colonne1 << endl; getline( fichier1, colonne2, ';' ); //cout << colonne2 << endl; getline( fichier1, colonne3, ';' ); //cout << colonne3 << endl; getline( fichier1, colonne4, ';' ); //cout << colonne4 << endl; getline( fichier1, colonne5, ';' ); //cout << colonne5 << endl; getline( fichier1, colonne6, ';' ); //cout << colonne6 << endl; getline( fichier1, colonne7, ';' ); //cout << colonne7 << endl; getline( fichier1, colonne8); //cout << colonne8 << endl; cout << colonne1<< "\t" << colonne4 << endl; fichier2 << colonne1 << "\t"<< colonne4 << endl; // On écrit les deux colonnes qui nous intérresses. } // Ouverture du fichier 20090727-TABLES_EDI.csv en lecture. ifstream fichier3("C:\\Documents and Settings\\bastien\\Bureau\\Offres - Tables EDI Excel\\20090731-TABLES_EDI.csv"); if ( fichier3.is_open ( ) == false ) // Test de l'ouverture du fichier3. { cout << "Erreur lors de l'ouverture du fichier 20090731-TABLES_EDI.csv" << endl; assert ( false ); return -1; } // Ouverture du fichier Ecriture du fichier4.txt en écriture. ofstream fichier4("C:\\Documents and Settings\\bastien\\Bureau\\Ecriture du fichier4.txt"); if ( fichier4.is_open ( ) == false ) // Test de louverture du fichier4 { cout << "Erreur lors de l'ouverture du fichier Ecriture du fichier4" << endl; assert ( false ); return -1; } string ligne1; // variable contenant chaque ligne lue // cette boucle s'arrête dès qu'une erreur de lecture survient while ( getline( fichier3, ligne1 ) ) { getline( fichier3, colonne_1, ';' ); //cout << colonne1 << endl; getline( fichier3, colonne_2, ';' ); //cout << colonne2 << endl; getline( fichier3, colonne_3, ';' ); //cout << colonne3 << endl; getline( fichier3, colonne_4, ';' ); //cout << colonne4 << endl; getline( fichier3, colonne_5, ';' ); //cout << colonne5 << endl; getline( fichier3, colonne_6, ';' ); //cout << colonne6 << endl; getline( fichier3, colonne_7, ';' ); //cout << colonne7 << endl; getline( fichier3, colonne_8); //cout << colonne8 << endl; cout << colonne_1<< "\t" << colonne_4 << endl; fichier4 << colonne_1 << "\t"<< colonne_4 << endl; // On écrit les deux colonnes qui nous intérresses. } char Tab1[] = {0}; char Tab2[] = {0}; Tab2[] = fichier4; Tab1[] = fichier2; if(Tab1[] != Tab2[]) cout << "Les fichiers ne sont pas identiques" << endl; fichier2.close(); // on referme le fichier2. fichier1.close(); // on referme le fichier1. fichier4.close(); // on referme le fichier4. fichier3.close(); // on referme le fichier3. return 0; }
Merci d'avance
Kira
Partager