Bonjour ,

Je suis débutant en C et j'ai actuellement un problème avec ma fonction de cryptologie , en effet elle rajoute des caractères ...

Voici le code source :

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
 
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define PASSWORD "frere"
 
char* crypte(char* line)
{
 
    int k = 0;
    int i = 0;
    char* cypher;
 
 
    cypher = malloc( sizeof(char) * strlen(line));
    if( cypher == NULL )
        return NULL;
 
    printf("len line = %d\n",strlen(line));
 
 
    while(1)
    {
        if(line[k] == '\0' )
            break;
 
        else
        {
           if(PASSWORD[i] == '\0')
                i = 0;
 
            printf("line[%d] = %c\n",k,line[k]);
            cypher[k] = line[k] ^ PASSWORD[i];
            printf("cypher[%d] = %c\n",k,cypher[k]);
            printf("len cypher = %d\n",strlen(cypher));
       }
 
        i++;
        k++;
    }
 
    printf("len cypher = %d\n",strlen(cypher));
    printf("cypher = %s\n\n",cypher);
 
    cypher[k]='\0';
 
    return cypher;
}
et quand je l'utilise dans le main avec par exemple :

crypte(crypte("0"));

la console me dit :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
len line = 1
line[0] = 0
cypher[0] = V
len cypher = 1
len cypher = 1
cypher = V
 
len line = 1
line[0] = V
cypher[0] = 0
len cypher = 3
len cypher = 3
cypher = 0♣=
Enfin le truc vert c'est le symbole de "pique" ( ♣ ) dans la console mais la balise code le remet en normal apparament , par contre ça marche avec 010 ou aba mais pas 001 ou 000001010 ...

Donc je comprend pas pourquoi cypher voit sa taille augmentée et pourquoi sa marche avec les string de 3 caracteres ..

Merci d'avance !