Bonjour à tous je suis en train de coder une fonction qui retourne une chaine de caractère en fonction d'un int passé en paramètres et de la base souhaitée.

Voici le prototype
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
int
intStr(char s[],const int tailletab,const int n, const int b)
Ma fonction fonctionne très bien pour les nombres positif, mon problème est pour les nombres négatif autre décimal, je ne trouves pas sur internet une méthode pour faire cette conversion Si l'un d'entre vous a un lien ou quelque chose, je suis preneur. merci

Voici ma fonction

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
int
intStr(char s[],const int tailletab,const int n, const int b)
//convertit n en un string en fonction de la base (b)
{
    int i = 0, signe = n, iMax = 1, chifre;
 
//partie binaire décimal et hexadécimal
    if(b == 2 || b == 10 || b == 16)
    {
        if(n < 0) // rend le nombre positif si il est négatif
        {
            signe = - signe;
            if(b == 10)
                iMax = 2;
        }
 
        do
        /*copie dans le tableau en a l'envers
          Exemple: si le nombre est -123 le tableau sera 321-.*/
        {
            chifre = signe % b;
 
            if(chifre > 9)
            {
                switch(chifre)
                {
                    case(10): s[i++] = 'A'; break;
                    case(11): s[i++] = 'B'; break;
                    case(12): s[i++] = 'C'; break;
                    case(13): s[i++] = 'D'; break;
                    case(14): s[i++] = 'E'; break;
                    case(15): s[i++] = 'F'; break;
                }
            }
            else
                s[i++] = chifre + '0';
        }
        while((signe /= b) > 0 && i < tailletab - iMax);
 
        if(i >= tailletab - iMax && signe != 0)// si le tableau est trop petit
            return 0;
 
//gere les nombres négatif
        if(n < 0 && b == 10)
            s[i++] = '-';
        else if(n < 0 && b == 2)
            while((!(i > 32)) && i < (tailletab /4) * 4)
                s[i++] = '1';
        else if(n < 0 && b == 16)
            while((!(i > 8)) && i < tailletab -2)
                s[i++] = 'F';
 
        s[i] = '\0';// signe de fin de chaine
 
        inverser(s);
 
        return 1;
    }
    else
        return 0;
}
Je suis amateur en programmation donc pas trop de mots technique svp si vous remarquez des erreurs

Merci