Bonjour
Je suis novice en programmation c. Je souhaite, dans le cadre d'un travail de recherche à présenter, écrire un programme de chiffrement et de déchiffrement par la méthode de vigenère. le plus de mon algorithme est qu'il devra prendre en compte les caractères accentués, les chiffres les espaces ainsi que les ponctuations de la langue française (à,é,è,ê,ç, ù, 1, 2, 3, 4, 5, 6,7,8,9,0).
j'ai pu écrire l’algorithme suivant mais je n'arrive pas a extraire le résultat du texte chiffré pour l'afficher a l’écran. ce résultat se trouve en principe dans cod[].

Ci dessous l'algorithme.

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
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
#include <wchar.h>
void warning(void);
void error(void);
void vigenere (void);
void chiffrement (void);
void dechiffrement (void);
wchar_t Alpha[] = {L"abcdefghijklmnopqrstuvwxyz@0123456789 ,;:!?.%c133%c130%c138%c136%c151%c135%c147%c131"};
wchar_t Cle []={};
wchar_t Acoder [1024], cod[1024];
int i, t, u;
int PosCle =0;
wchar_t *PosLetCle; //pointeur sur la position de la lettre cle
wchar_t *Pos; //Pointeur sur la position de la lettre dans la pgrase
int NouvPos=0; //nouvelle position qui determinera la lettre correspondant au chiffrement
//int choix, nombre;
wchar_t LetCle; // la lettre dans la clé de chiffrement
wchar_t Let, Lettre; //La lettre dans la phrae à coder
 
	int main()
	{
 
        wprintf (L"\n Veuillez saisir la phrase %c crypter:\n ", 133 );
        wscanf(L"%ls", Acoder);
        wprintf (L"\n Entrez la cle de codage de la phrase: \n" );
        wscanf(L"%ls", Cle);
        t = wcslen(Acoder);// longueur de la phrase saisie au clavier
        u = wcslen(Cle); //Longueur de la clé de chiffrement
 
            for (i=0; i<t ; i++)
                {
                    PosCle= PosCle+1;
                    if (PosCle>u)
                    PosCle=1;
 
        /* on determine quelle est la lettre cle et sa position dans l'alphabet que nous avons définit en prenant en compte les caractère acceutué */
 
                    LetCle = Cle[PosCle];
                    PosLetCle = wcschr(Alpha, LetCle); //on renvoie un pointeur sur la première occurence de Letclé que l'on trouve dans Alpha equivaut a strchr en C
 
                    /* on determine la position de la lettre a coder et le decalage a appliquer */
                    Let = Acoder[i];
                    Pos = wcschr(Alpha, Let);
                    NouvPos = *Pos + *PosLetCle;
 
                    if (NouvPos > 52)
                    NouvPos = NouvPos - 52;
 
                    cod[i]= Alpha[NouvPos];
                }
                cod[i]= '\0';
 wprintf(L"la phrase codee est: %ls\n", cod);
 
	}



Mon algorithme est t'il correct ou existe t'il des modifications a y apporter? L'affichage du message chiffré ne se fait pas a l'écran.

Je sollicite votre indulgence et espère avoir un retour
Merci