Bonjour à tous.
Après avoir parcouru un peu le forum et le reste de l'internet, j'ai trouvé diverses informations concernant mon souci, mais rien de compréhensible ou fonctionnel.
Il s'agit d'un devoir d'algorithmique dont voici l'énoncé
Ma fonction doit donc prendre un entier en paramètre et utiliser la division modulaire pour compléter une chaîne de caractère (qui sera ensuite inversée, sans quoi le résultat sera faux) puis retournera cette valeur.Ecrire une fonction en C qui reçoit un nombre entier (ex: 13) et retourne un tableau de caractères représentant la valeur binaire de ce nombre (ex: 1101).
Cependant, après avoir procédé à l'implémentation, je ne parviens toujours pas au bout de mes peines. Mon erreur doit probablement venir de la façon dont je manipule ma chaîne de caractère.
Pourrait-on m'indiquer mon erreur et le pourquoi de son dysfonctionnement ?
Voici le code que j'utilise (celui que j'ai actuellement, j'ai testé plein de choses mais rien de concluant). Il n'y a pas l'inversion de la chaîne de caractère dedans.
J'ai également tenté sans succès d'utiliser strcpy et strcat, voire la combinaison des deux. Sans succès
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 #include <stdio.h> #include <stdlib.h> #include <string.h> char* convertToBinary(int nb) { char *bin = (char*)malloc(sizeof(char)*8); //Admettons que je n'utilise que des chiffres codés sur 1 octet int i = 0; //Le reste de la division sera utilisé pour compléter le binaire. Puis on prends le résultat entier de la division pour continuer la conversion for(i = nb; i > 0; i /= 2) { if(i % 2) *bin += "1"; else *bin += "0"; } return bin; //On retourne la chaîne de caractère } int main() { int number = NULL; scanf("%d", &number); printf("%s\n", convertToBinary(number)); return 0; }
Ce code compile mais retourne des valeurs étranges. Par exemple, si j'entre le nombre 13 (comme dans la donnée), j'obtiens comme résultat : ↕↨i↕↨i
Notez que ce résultat change à chaque exécution, malgré le fait que j'entre toujours le nombre 13.
Merci pour vos éclaircissements.
Partager