Bonjour à tous,
Je tente en ce moment de réaliser un programme de décodage (décryptage) d'un fichier binaire.
Le principe de codage/décodage est le suivant: le texte d'origine est découpé en 8 colonnes (tableaux col0 à col7), chaque colonne renvoyant vers une table de 256 caractères qui lui est propre. Ainsi, si on code la chaine "aaaaaaaaa", chaque "a" sera codé différemment à l'exception du dernier qui étant en position 8 équivaut à celui en position 0.
Le porgramme lit donc caractère par caractère un fichier source codé, décode le caractère en fonction de sa colonne et écrit le caractère décodé dans le fichier cible. (on travaille sur la table ascii étendue puisque les caractères accentués doivent être codés)
Mon programme fonctionne parfaitement avec tous les caractères ascii compris entre 0x00 et 0x7f, par contre toute l'autre moitiée de la table n'est pas trouvée dans le tableau.

Je précise que ce code est destiné à ne servir qu'une seule fois (mais sur un fichier de 2000 lignes) et que j'ai péniblement réussi à "pondre" l'horreur ci dessous étant totalement débutant en C.
Merci donc d'éviter toutes les remarques concernant l'absence d'optimisation de mon code. Il est moche et j'assume mais ce n'est qu'une infime (mais vitale) fraction du boulot qui me reste à réaliser pour achever mon projet.

voici donc le programme. Merci d'avance à chacun pour son indulgence et son aide.

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
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
#include <iostream>
#include <fstream> 
#include <string.h>
#include <stdio.h>
#include <stdint.h>
 
 
using namespace std;
 
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
 
// programme de décryptage
 
int main(int argc, char** argv) {
 
// saisie des noms de fichier source et cible
	char nomdefichierorigine[50];
	char nomdefichierdestination[50];
	printf ("nom du fichier a decoder (avec l'extension .rdf):");
	fgets(nomdefichierorigine, sizeof nomdefichierorigine, stdin);
	nomdefichierorigine [strlen(nomdefichierorigine)-1] =0;   //retire le /n (retour à la ligne) en fin de fgets
	printf ("nom du fichier cible (avec l'extension.txt):");
	fgets(nomdefichierdestination, sizeof nomdefichierdestination, stdin);
	nomdefichierdestination [strlen(nomdefichierdestination)-1] =0;   //retire le /n (retour à la ligne) en fin de fgets
 
	printf("Resume du projet:\n");
	printf("Le programme va ouvrir le fichier %s, le decoder et enregistrer le resultat dans le fichier %s.\n\n",nomdefichierorigine,nomdefichierdestination);
 
//ouverture du fichier source	
 
	FILE* fichierorigine = fopen(nomdefichierorigine,"rb");
	printf ("Tentative d'ouverture du fichier %s\n", nomdefichierorigine);
	if (fichierorigine == NULL)
	{
		printf("probleme d'ouverture du fichier %s. Verifier que le fichier existe et est bien present dans le meme repertoire que l'application'.\n");
		printf("operation annulee. Fermez la fenêtre.");
    	exit(0);
	}
 
 	else
    printf("fichier %s ouvert en lecture\n",nomdefichierorigine);
 
//ouverture du fichier cible	
 
	FILE* fichierdestination = fopen(nomdefichierdestination,"wb");
	printf ("Tentative de creation ou d'ecrasement du fichier %s\n", nomdefichierdestination);
	if (fichierdestination == NULL)
	{
		printf("probleme de creation ou d'ecrasement du fichier %s.\n");
		printf("operation annulee. Fermez la fenêtre.");
    	exit(0);
	}
 
 	else
    printf("fichier %s ouvert en ecriture\n",nomdefichierdestination);	
 
 
 
//Déclaration des tableaux de correspondance
unsigned char decode[256]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F,0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF,0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF,0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF};
unsigned char col0[256]={0x44,0x45,0x46,0x47,0x40,0x41,0x42,0x43,0x4C,0x4D,0x4E,0x4F,0x48,0x49,0x4A,0x4B,0x54,0x55,0x56,0x57,0x50,0x51,0x52,0x53,0x5C,0x5D,0x5E,0x5F,0x58,0x59,0x5A,0x5B,0x64,0x65,0x66,0x67,0x60,0x61,0x62,0x63,0x6C,0x6D,0x6E,0x6F,0x68,0x69,0x6A,0x6B,0x74,0x75,0x76,0x77,0x70,0x71,0x72,0x73,0x7C,0x7D,0x7E,0x7F,0x78,0x79,0x7A,0x7B,0x04,0x05,0x06,0x07,0x00,0x01,0x02,0x03,0x0C,0x0D,0x0E,0x0F,0x08,0x09,0x0A,0x0B,0x14,0x15,0x16,0x17,0x10,0x11,0x12,0x13,0x1C,0x1D,0x1E,0x1F,0x18,0x19,0x1A,0x1B,0x24,0x25,0x26,0x27,0x20,0x21,0x22,0x23,0x2C,0x2D,0x2E,0x2F,0x28,0x29,0x2A,0x2B,0x34,0x35,0x36,0x37,0x30,0x31,0x32,0x33,0x3C,0x3D,0x3E,0x3F,0x38,0x39,0x3A,0x3B,0x84,0x85,0x86,0x87,0x80,0x81,0x82,0x83,0x8C,0x8D,0x8E,0x8F,0x88,0x89,0x8A,0x8B,0x94,0x95,0x96,0x97,0x90,0x91,0x92,0x93,0x9C,0x9D,0x9E,0x9F,0x98,0x99,0x9A,0x9B,0xA4,0xA5,0xA6,0xA7,0xA0,0xA1,0xA2,0xA3,0xAC,0xAD,0xAE,0xAF,0xA8,0xA9,0xAA,0xAB,0xB4,0xB5,0xB6,0xB7,0xB0,0xB1,0xB2,0xB3,0xBC,0xBD,0xBE,0xBF,0xB8,0xB9,0xBA,0xBB,0xC4,0xC5,0xC6,0xC7,0xC0,0xC1,0xC2,0xC3,0xCC,0xCD,0xCE,0xCF,0xC8,0xC9,0xCA,0xCB,0xD4,0xD5,0xD6,0xD7,0xD0,0xD1,0xD2,0xD3,0xDC,0xDD,0xDE,0xDF,0xD8,0xD9,0xDA,0xDB,0xE4,0xE5,0xE6,0xE7,0xE0,0xE1,0xE2,0xE3,0xEC,0xED,0xEE,0xEF,0xE8,0xE9,0xEA,0xEB,0xF4,0xF5,0xF6,0xF7,0xF0,0xF1,0xF2,0xF3,0xFC,0xFD,0xFE,0xFF,0xF8,0xF9,0xFA,0xFB};
unsigned char col1[256]={0x32,0x33,0x30,0x31,0x36,0x37,0x34,0x35,0x3A,0x3B,0x38,0x39,0x3E,0x3F,0x3C,0x3D,0x22,0x23,0x20,0x21,0x26,0x27,0x24,0x25,0x2A,0x2B,0x28,0x29,0x2E,0x2F,0x2C,0x2D,0x12,0x13,0x10,0x11,0x16,0x17,0x14,0x15,0x1A,0x1B,0x18,0x19,0x1E,0x1F,0x1C,0x1D,0x02,0x03,0x00,0x01,0x06,0x07,0x04,0x05,0x0A,0x0B,0x08,0x09,0x0E,0x0F,0x0C,0x0D,0x72,0x73,0x70,0x71,0x76,0x77,0x74,0x75,0x7A,0x7B,0x78,0x79,0x7E,0x7F,0x7C,0x7D,0x62,0x63,0x60,0x61,0x66,0x67,0x64,0x65,0x6A,0x6B,0x68,0x69,0x6E,0x6F,0x6C,0x6D,0x52,0x53,0x50,0x51,0x56,0x57,0x54,0x55,0x5A,0x5B,0x58,0x59,0x5E,0x5F,0x5C,0x5D,0x42,0x43,0x40,0x41,0x46,0x47,0x44,0x45,0x4A,0x4B,0x48,0x49,0x4E,0x4F,0x4C,0x4D,0xF2,0xF3,0xF0,0xF1,0xF6,0xF7,0xF4,0xF5,0xFA,0xFB,0xF8,0xF9,0xFE,0xFF,0xFC,0xFD,0xE2,0xE3,0xE0,0xE1,0xE6,0xE7,0xE4,0xE5,0xEA,0xEB,0xE8,0xE9,0xEE,0xEF,0xEC,0xED,0xD2,0xD3,0xD0,0xD1,0xD6,0xD7,0xD4,0xD5,0xDA,0xDB,0xD8,0xD9,0xDE,0xDF,0xDC,0xDD,0xC2,0xC3,0xC0,0xC1,0xC6,0xC7,0xC4,0xC5,0xCA,0xCB,0xC8,0xC9,0xCE,0xCF,0xCC,0xCD,0xB2,0xB3,0xB0,0xB1,0xB6,0xB7,0xB4,0xB5,0xBA,0xBB,0xB8,0xB9,0xBE,0xBF,0xBC,0xBD,0xA2,0xA3,0xA0,0xA1,0xA6,0xA7,0xA4,0xA5,0xAA,0xAB,0xA8,0xA9,0xAE,0xAF,0xAC,0xAD,0x92,0x93,0x90,0x91,0x96,0x97,0x94,0x95,0x9A,0x9B,0x98,0x99,0x9E,0x9F,0x9C,0x9D,0x82,0x83,0x80,0x81,0x86,0x87,0x84,0x85,0x8A,0x8B,0x88,0x89,0x8E,0x8F,0x8C,0x8D};
unsigned char col2[256]={0x6C,0x6D,0x6E,0x6F,0x68,0x69,0x6A,0x6B,0x64,0x65,0x66,0x67,0x60,0x61,0x62,0x63,0x7C,0x7D,0x7E,0x7F,0x78,0x79,0x7A,0x7B,0x74,0x75,0x76,0x77,0x70,0x71,0x72,0x73,0x4C,0x4D,0x4E,0x4F,0x48,0x49,0x4A,0x4B,0x44,0x45,0x46,0x47,0x40,0x41,0x42,0x43,0x5C,0x5D,0x5E,0x5F,0x58,0x59,0x5A,0x5B,0x54,0x55,0x56,0x57,0x50,0x51,0x52,0x53,0x2C,0x2D,0x2E,0x2F,0x28,0x29,0x2A,0x2B,0x24,0x25,0x26,0x27,0x20,0x21,0x22,0x23,0x3C,0x3D,0x3E,0x3F,0x38,0x39,0x3A,0x3B,0x34,0x35,0x36,0x37,0x30,0x31,0x32,0x33,0x0C,0x0D,0x0E,0x0F,0x08,0x09,0x0A,0x0B,0x04,0x05,0x06,0x07,0x00,0x01,0x02,0x03,0x1C,0x1D,0x1E,0x1F,0x18,0x19,0x1A,0x1B,0x14,0x15,0x16,0x17,0x10,0x11,0x12,0x13,0xAC,0xAD,0xAE,0xAF,0xA8,0xA9,0xAA,0xAB,0xA4,0xA5,0xA6,0xA7,0xA0,0xA1,0xA2,0xA3,0xBC,0xBD,0xBE,0xBF,0xB8,0xB9,0xBA,0xBB,0xB4,0xB5,0xB6,0xB7,0xB0,0xB1,0xB2,0xB3,0x8C,0x8D,0x8E,0x8F,0x88,0x89,0x8A,0x8B,0x84,0x85,0x86,0x87,0x80,0x81,0x82,0x83,0x9C,0x9D,0x9E,0x9F,0x98,0x99,0x9A,0x9B,0x94,0x95,0x96,0x97,0x90,0x91,0x92,0x93,0xEC,0xED,0xEE,0xEF,0xE8,0xE9,0xEA,0xEB,0xE4,0xE5,0xE6,0xE7,0xE0,0xE1,0xE2,0xE3,0xFC,0xFD,0xFE,0xFF,0xF8,0xF9,0xFA,0xFB,0xF4,0xF5,0xF6,0xF7,0xF0,0xF1,0xF2,0xF3,0xCC,0xCD,0xCE,0xCF,0xC8,0xC9,0xCA,0xCB,0xC4,0xC5,0xC6,0xC7,0xC0,0xC1,0xC2,0xC3,0xDC,0xDE,0xDF,0xDF,0xD8,0xD9,0xDA,0xDB,0xD4,0xD5,0xD6,0xD7,0xD0,0xD1,0xD2,0xD3};
unsigned char col3[256]={0xE5,0xE4,0xE7,0xE6,0xE1,0xE0,0xE3,0xE2,0xED,0xEC,0xEF,0xEE,0xE9,0xE8,0xEB,0xEA,0xF5,0xF4,0xF7,0xF6,0xF1,0xF0,0xF3,0xF2,0xFD,0xFC,0xFF,0xFE,0xF9,0xF8,0xFB,0xFA,0xC5,0xC4,0xC7,0xC6,0xC1,0xC0,0xC3,0xC2,0xCD,0xCC,0xCF,0xCE,0xC9,0xC8,0xCB,0xCA,0xD5,0xD4,0xD7,0xD6,0xD1,0xD0,0xD3,0xD2,0xDD,0xDC,0xDF,0xDE,0xD9,0xD8,0xDB,0xDA,0xA5,0xA4,0xA7,0xA6,0xA1,0xA0,0xA3,0xA2,0xAD,0xAC,0xAF,0xAE,0xA9,0xA8,0xAB,0xAA,0xB5,0xB4,0xB7,0xB6,0xB1,0xB0,0xB3,0xB2,0xBD,0xBC,0xBF,0xBE,0xB9,0xB8,0xBB,0xBA,0x85,0x84,0x87,0x86,0x81,0x80,0x83,0x82,0x8D,0x8C,0x8F,0x8E,0x89,0x88,0x8B,0x8A,0x95,0x94,0x97,0x96,0x91,0x90,0x93,0x92,0x9D,0x9C,0x9F,0x9E,0x99,0x98,0x9B,0x9A,0x25,0x24,0x27,0x26,0x21,0x20,0x23,0x22,0x2D,0x2C,0x2F,0x2E,0x29,0x28,0x2B,0x2A,0x35,0x34,0x37,0x36,0x31,0x30,0x33,0x32,0x3D,0x3C,0x3F,0x3E,0x39,0x38,0x3B,0x3A,0x05,0x04,0x07,0x06,0x01,0x00,0x03,0x02,0x0D,0x0C,0x0F,0x0E,0x09,0x08,0x0B,0x0A,0x15,0x14,0x17,0x16,0x11,0x10,0x13,0x12,0x1D,0x1C,0x1F,0x1E,0x19,0x18,0x1B,0x1A,0x65,0x64,0x67,0x66,0x61,0x60,0x63,0x62,0x6D,0x6C,0x6F,0x6E,0x69,0x68,0x6B,0x6A,0x75,0x74,0x77,0x76,0x71,0x70,0x73,0x72,0x7D,0x7C,0x7F,0x7E,0x79,0x78,0x7B,0x7A,0x45,0x44,0x47,0x46,0x41,0x40,0x43,0x42,0x4D,0x4C,0x4F,0x4E,0x49,0x48,0x4B,0x4A,0x55,0x54,0x57,0x56,0x51,0x50,0x53,0x52,0x5D,0x5C,0x5F,0x5E,0x59,0x58,0x5B,0x5A};
unsigned char col4[256]={0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF,0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37};
unsigned char col5[256]={0x79,0x78,0x7B,0x7A,0x7D,0x7C,0x7F,0x7E,0x71,0x70,0x73,0x72,0x75,0x74,0x77,0x76,0x69,0x68,0x6B,0x6A,0x6D,0x6C,0x6F,0x6E,0x61,0x60,0x63,0x62,0x65,0x64,0x67,0x66,0x59,0x58,0x5B,0x5A,0x5D,0x5C,0x5F,0x5E,0x51,0x50,0x53,0x52,0x55,0x54,0x57,0x56,0x49,0x48,0x4B,0x4A,0x4D,0x4C,0x4F,0x4E,0x41,0x40,0x43,0x42,0x45,0x44,0x47,0x46,0x39,0x38,0x3B,0x3A,0x3D,0x3C,0x3F,0x3E,0x31,0x30,0x33,0x32,0x35,0x34,0x37,0x36,0x29,0x28,0x2B,0x2A,0x2D,0x2C,0x2F,0x2E,0x21,0x20,0x23,0x22,0x25,0x24,0x27,0x26,0x19,0x18,0x1B,0x1A,0x1D,0x1C,0x1F,0x1E,0x11,0x10,0x13,0x12,0x15,0x14,0x17,0x16,0x09,0x08,0x0B,0x0A,0x0D,0x0C,0x0F,0x0E,0x01,0x00,0x03,0x02,0x05,0x04,0x07,0x06,0xB9,0xB8,0xBB,0xBA,0xBD,0xBC,0xBF,0xBE,0xB1,0xB0,0xB3,0xB2,0xB5,0xB4,0xB7,0xB6,0xA9,0xA8,0xAB,0xAA,0xAD,0xAC,0xAF,0xAE,0xA1,0xA0,0xA3,0xA2,0xA5,0xA4,0xA7,0xA6,0x99,0x98,0x9B,0x9A,0x9D,0x9C,0x9F,0x9E,0x91,0x90,0x93,0x92,0x95,0x94,0x97,0x96,0x89,0x88,0x8B,0x8A,0x8D,0x8C,0x8F,0x8E,0x81,0x80,0x83,0x82,0x85,0x84,0x87,0x86,0xF9,0xF8,0xFB,0xFA,0xFD,0xFC,0xFF,0xFE,0xF1,0xF0,0xF3,0xF2,0xF5,0xF4,0xF7,0xF6,0xE9,0xE8,0xEB,0xEA,0xED,0xEC,0xEF,0xEE,0xE1,0xE0,0xE3,0xE2,0xE5,0xE4,0xE7,0xE6,0xD9,0xD8,0xDB,0xDA,0xDD,0xDC,0xDF,0xDE,0xD1,0xD0,0xD3,0xD2,0xD5,0xD4,0xD7,0xD6,0xC9,0xC8,0xCB,0xCA,0xCD,0xCC,0xCF,0xCE,0xC1,0xC0,0xC3,0xC2,0xC5,0xC4,0xC7,0xC6};
unsigned char col6[256]={0x7F,0x7E,0x7D,0x7C,0x7B,0x7A,0x79,0x78,0x77,0x76,0x75,0x74,0x73,0x72,0x71,0x70,0x6F,0x6E,0x6D,0x6C,0x6B,0x6A,0x69,0x68,0x67,0x66,0x65,0x64,0x63,0x62,0x61,0x60,0x5F,0x5E,0x5D,0x5C,0x5B,0x5A,0x59,0x58,0x57,0x56,0x55,0x54,0x53,0x52,0x51,0x50,0x4F,0x4E,0x4D,0x4C,0x4B,0x4A,0x49,0x48,0x47,0x46,0x45,0x44,0x43,0x42,0x41,0x40,0x3F,0x3E,0x3D,0x3C,0x3B,0x3A,0x39,0x38,0x37,0x36,0x35,0x34,0x33,0x32,0x31,0x30,0x2F,0x2E,0x2D,0x2C,0x2B,0x2A,0x29,0x28,0x27,0x26,0x25,0x24,0x23,0x22,0x21,0x20,0x1F,0x1E,0x1D,0x1C,0x1B,0x1A,0x19,0x18,0x17,0x16,0x15,0x14,0x13,0x12,0x11,0x10,0x0F,0x0E,0x0D,0x0C,0x0B,0x0A,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x01,0x00,0xBF,0xBE,0xBD,0xBC,0xBB,0xBA,0xB9,0xB8,0xB7,0xB6,0xB5,0xB4,0xB3,0xB2,0xB1,0xB0,0xAF,0xAE,0xAD,0xAC,0xAB,0xAA,0xA9,0xA8,0xA7,0xA6,0xA5,0xA4,0xA3,0xA2,0xA1,0xA0,0x9F,0x9E,0x9D,0x9C,0x9B,0x9A,0x99,0x98,0x97,0x96,0x95,0x94,0x93,0x92,0x91,0x90,0x8F,0x8E,0x8D,0x8C,0x8B,0x8A,0x89,0x88,0x87,0x86,0x85,0x84,0x83,0x82,0x81,0x80,0xFF,0xFE,0xFD,0xFC,0xFB,0xFA,0xF9,0xF8,0xF7,0xF6,0xF5,0xF4,0xF3,0xF2,0xF1,0xF0,0xEF,0xEE,0xED,0xEC,0xEB,0xEA,0xE9,0xE8,0xE7,0xE6,0xE5,0xE4,0xE3,0xE2,0xE1,0xE0,0xDF,0xDE,0xDD,0xDC,0xDB,0xDA,0xD9,0xD8,0xD7,0xD6,0xD5,0xD4,0xD3,0xD2,0xD1,0xD0,0xCF,0xCE,0xCD,0xCC,0xCB,0xCA,0xC9,0xC8,0xC7,0xC6,0xC5,0xC4,0xC3,0xC2,0xC1,0xC0};
unsigned char col7[256]={0x95,0x94,0x97,0x96,0x91,0x90,0x93,0x92,0x9D,0x9C,0x9F,0x9E,0x99,0x98,0x9B,0x9A,0x85,0x84,0x87,0x86,0x81,0x80,0x83,0x82,0x8D,0x8C,0x8F,0x8E,0x89,0x88,0x8B,0x8A,0xB5,0xB4,0xB7,0xB6,0xB1,0xB0,0xB3,0xB2,0xBD,0xBC,0xBF,0xBE,0xB9,0xB8,0xBB,0xBA,0xA5,0xA4,0xA7,0xA6,0xA1,0xA0,0xA3,0xA2,0xAD,0xAC,0xAF,0xAE,0xA9,0xA8,0xAB,0xAA,0xD5,0xD4,0xD7,0xD6,0xD1,0xD0,0xD3,0xD2,0xDD,0xDC,0xDF,0xDE,0xD9,0xD8,0xDB,0xDA,0xC5,0xC4,0xC7,0xC6,0xC1,0xC0,0xC3,0xC2,0xCD,0xCC,0xCF,0xCE,0xC9,0xC8,0xCB,0xCA,0xF5,0xF4,0xF7,0xF6,0xF1,0xF0,0xF3,0xF2,0xFD,0xFC,0xFF,0xFE,0xF9,0xF8,0xFB,0xFA,0xE5,0xE4,0xE7,0xE6,0xE1,0xE0,0xE3,0xE2,0xED,0xEC,0xEF,0xEE,0xE9,0xE8,0xEB,0xEA,0x55,0x54,0x57,0x56,0x51,0x50,0x53,0x52,0x5D,0x5C,0x5F,0x5E,0x59,0x58,0x5B,0x5A,0x45,0x44,0x47,0x46,0x41,0x40,0x43,0x42,0x4D,0x4C,0x4F,0x4E,0x49,0x48,0x4B,0x4A,0x75,0x74,0x77,0x76,0x71,0x70,0x73,0x72,0x7D,0x7C,0x7F,0x7E,0x79,0x78,0x7B,0x7A,0x65,0x64,0x67,0x66,0x61,0x60,0x63,0x62,0x6D,0x6C,0x6F,0x6E,0x69,0x68,0x6B,0x6A,0x15,0x14,0x17,0x16,0x11,0x10,0x13,0x12,0x1D,0x1C,0x1F,0x1E,0x19,0x18,0x1B,0x1A,0x05,0x04,0x07,0x06,0x01,0x00,0x03,0x02,0x0D,0x0C,0x0F,0x0E,0x09,0x08,0x0B,0x0A,0x35,0x34,0x37,0x36,0x31,0x30,0x33,0x32,0x3D,0x3C,0x3F,0x3E,0x39,0x38,0x3B,0x3A,0x25,0x24,0x27,0x26,0x21,0x20,0x23,0x22,0x2D,0x2C,0x2F,0x2E,0x29,0x28,0x2B,0x2A};
 
// lecture octet par octet du fichier source
 
/* traitement du contenu du fichier source*/
 
int colonne=0;
int erreur=0;
 
	do
    { 
 
        char caractere_lu = fgetc(fichierorigine); //lecture dans le fichier source d'un caractère
 
        // Checking for end of file 
        if (feof(fichierorigine)) //sortie de boucle si fin de fichier atteinte
            break ; 
 
 
		  //boucle de recherche dans la colonne correspondante et gestion d'erreur
 
			if (colonne==0)	
			{
				int i;
				int pos=-1;
 
				//boucle de recherche dans la colonne correspondante
  				for (i=0 ; (i<256); i++)
    		    if (col0[i]==caractere_lu)
    		       {
				   printf("Colonne %d: caractere trouve: %2.2hhx devient %2.2hhx soit %c\n",colonne, col0[i], decode[i], decode[i]);
				   fputc(decode[i], fichierdestination);   //ecriture dans le fichier cible d'un caractère
				   pos=i;
				   }
 
				if (pos==-1)
				{
     			printf("Colonne %d: La valeur %2.2hhx ne se trouve pas dans le tableau.\n",colonne, caractere_lu);
     			erreur++;
     			}
     		}
 
  			if (colonne==1)	
			{
				int i;
				int pos=-1;
 
				//boucle de recherche dans la colonne correspondante
  				for (i=0 ; (i<256); i++)
    		    if (col1[i]==caractere_lu)
    		       {
				   printf("Colonne %d: caractere trouve: %2.2hhx devient %2.2hhx soit %c\n",colonne, col1[i], decode[i], decode[i]);
				   fputc(decode[i], fichierdestination);   //ecriture dans le fichier cible d'un caractère
				   pos=i;
				   }
 
				if (pos==-1)
				{
     			printf("Colonne %d: La valeur %2.2hhx ne se trouve pas dans le tableau.\n",colonne, caractere_lu);
     			erreur++;
     			}
     		}
 
  			if (colonne==2)	
			{
				int i;
				int pos=-1;
 
				//boucle de recherche dans la colonne correspondante
  				for (i=0 ; (i<256); i++)
    		    if (col2[i]==caractere_lu)
    		       {
				   printf("Colonne %d: caractere trouve: %2.2hhx devient %2.2hhx soit %c\n",colonne, col2[i], decode[i], decode[i]);
				   fputc(decode[i], fichierdestination);   //ecriture dans le fichier cible d'un caractère
				   pos=i;
				   }
 
				if (pos==-1)
				{
     			printf("Colonne %d: La valeur %2.2hhx ne se trouve pas dans le tableau.\n",colonne, caractere_lu);
     			erreur++;
     			}
     		}
 
	  		if (colonne==3)	
			{
				int i;
				int pos=-1;
 
				//boucle de recherche dans la colonne correspondante
  				for (i=0 ; (i<256); i++)
    		    if (col3[i]==caractere_lu)
    		       {
				   printf("Colonne %d: caractere trouve: %2.2hhx devient %2.2hhx soit %c\n",colonne, col3[i], decode[i], decode[i]);
				   fputc(decode[i], fichierdestination);   //ecriture dans le fichier cible d'un caractère
				   pos=i;
				   }
 
				if (pos==-1)
				{
     			printf("Colonne %d: La valeur %2.2hhx ne se trouve pas dans le tableau.\n",colonne, caractere_lu);
     			erreur++;
     			}
     		}
 
  			if (colonne==4)	
			{
				int i;
				int pos=-1;
 
				//boucle de recherche dans la colonne correspondante
  				for (i=0 ; (i<256); i++)
    		    if (col4[i]==caractere_lu)
    		       {
				   printf("Colonne %d: caractere trouve: %2.2hhx devient %2.2hhx soit %c\n",colonne, col4[i], decode[i], decode[i]);
				   fputc(decode[i], fichierdestination);   //ecriture dans le fichier cible d'un caractère
				   pos=i;
				   }
 
				if (pos==-1)
				{
     			printf("Colonne %d: La valeur %2.2hhx ne se trouve pas dans le tableau.\n",colonne, caractere_lu);
     			erreur++;
     			}
     		}
 
  			if (colonne==5)	
			{
				int i;
				int pos=-1;
 
				//boucle de recherche dans la colonne correspondante
  				for (i=0 ; (i<256); i++)
    		    if (col5[i]==caractere_lu)
    		       {
				   printf("Colonne %d: caractere trouve: %2.2hhx devient %2.2hhx soit %c\n",colonne, col5[i], decode[i], decode[i]);
				   fputc(decode[i], fichierdestination);   //ecriture dans le fichier cible d'un caractère
				   pos=i;
				   }
 
				if (pos==-1)
				{
     			printf("Colonne %d: La valeur %2.2hhx ne se trouve pas dans le tableau.\n",colonne, caractere_lu);
     			erreur++;
     			}
     		}
 
  			if (colonne==6)	
			{
				int i;
				int pos=-1;
 
				//boucle de recherche dans la colonne correspondante
  				for (i=0 ; (i<256); i++)
    		    if (col6[i]==caractere_lu)
    		       {
				   printf("Colonne %d: caractere trouve: %2.2hhx devient %2.2hhx soit %c\n",colonne, col6[i], decode[i], decode[i]);
				   fputc(decode[i], fichierdestination);   //ecriture dans le fichier cible d'un caractère
				   pos=i;
				   }
 
				if (pos==-1)
				{
     			printf("Colonne %d: La valeur %2.2hhx ne se trouve pas dans le tableau.\n",colonne, caractere_lu);
     			erreur++;
     			}
     		}
 
  			if (colonne==7)	
			{
				int i;
				int pos=-1;
 
				//boucle de recherche dans la colonne correspondante
  				for (i=0 ; (i<256); i++)
    		    if (col7[i]==caractere_lu)
    		       {
				   printf("Colonne %d: caractere trouve: %2.2hhx devient %2.2hhx soit %c\n",colonne, col7[i], decode[i], decode[i]);
				   fputc(decode[i], fichierdestination);   //ecriture dans le fichier cible d'un caractère
				   pos=i;
				   }
 
				if (pos==-1)
				{
     			printf("Colonne %d: La valeur %2.2hhx ne se trouve pas dans le tableau.\n",colonne, caractere_lu);
     			erreur++;
     			}
     		}
 
 
 
  		colonne++;
  		if(colonne>7) colonne=0;
 
 
    }  while(1); 
 
 
//fermeture des fichiers source et cible
	fclose (fichierorigine);
	fclose (fichierdestination);
 
//fin du programme
	if (erreur==0) {
	printf("\nProcessus termine avec succes.\n");}
	else {
	printf("\nAttention, le processus s'est acheve mais comporte %d erreurs.\n",erreur);}
	printf("Appuyez sur 'entrer' pour quitter.");
	while (getchar() != '\n');
	return 0;
}