Bonjour a tous

Bon, voila, je suis entrain de coder un programme permettant de convertir un decimal en binaire puis vers d'autres bases (on vera ensuite ^^)

Mais, j'ai un petit probleme lors de la conversion du binaire vers le decimal

Lorsque, je tape 11 par exemple, j'ai une exception non gere dans ma fonction

Voici le code

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
#include <stdio.h>
 
int bin2dec(char *bin)
{
    int dec = 0;
    while(*bin)
    {
        dec = (2 * dec) + (*bin - '0');
        bin++;
    }
    return dec;
}
 
void dec2bin(int dec, char *bin, int size)
{
 
    int reste = 1, i;
    memset(bin, '0', size);
    for(i = (size-1); reste != 0; i--)
    {
        reste = dec / 2;
        *(bin+i) = (dec % 2) + '0';
        dec = reste;
    }
    *(bin+(size)) = '\0';
    return;
}
 
int menu ()
{
    int choix = 0;
 
    while (choix <1 || choix > 6)
    {
        printf("-== Menu ==-\n\n");
        printf("1 : Decimal --> Binaire\n");
        printf("2 : Binaire --> Decimal\n");
        printf("3 : Decimal --> Hexadecimal\n");
        printf("4 : Hexadecimal --> Decimal\n");
        printf("5 : Binaire --> Hexadecimal\n");
        printf("6 : Hexadecimal --> Binaire\n\n");
        printf("Votre choix ?");
        scanf("%d", &choix);
        system("cls");
    }
    return choix;
 
}
 
int main(int argc, char *argv[])
{
    char buf[256];
    int nb = 0;
    int caractere = 0;
    char binaire = 0;
 
    switch (menu())
    {
    case 1 :
 
        system("cls");
        printf("Choisissez un nombre decimal pour le convertir en binaire?\n\n");
 
        scanf("%d", &nb);
        printf("\n");
        dec2bin(nb, buf, 8);
        printf("%s\n\n", buf);
 
        printf ("\nAppuyez sur Entrer pour quitter\n");  // Fonction pour mettre en pause, d'ici
        getchar(caractere);
        getchar (); // Jusqu'ici
 
        break;
 
    case 2:
 
        system("cls");
        printf("Choisissez un nombre binaire pour le convertir en decimal?\n\n");
 
        scanf("%d", &nb);
        printf("\n");
        binaire = bin2dec(nb);
        printf("%d\n\n", binaire);
 
        printf ("\nAppuyez sur Entrer pour quitter\n");  // Fonction pour mettre en pause, d'ici
        getchar(caractere);
        getchar (); // Jusqu'ici
 
        break;
 
    }
}
 
/*Merci a kod32*/
Les deux fonctions ne sont pas de moi, mais je compte faire celle sur l'hexa tout seul

Merci de votre aide