Je vous joint ou joins ?
Question proposée par Answiki le mercredi 20 novembre 2019 à 10:19:17.

En C, comment écrire une fonction qui convertit un entier en binaire dans une chaîne de caractères ?

La fonction C suivante permet de convertir un entier en binaire et d'enregistrer le résultat dans une chaîne de caractères :
// Convertit un entier en binaire
// integer : l'entier à convertir
// binary : la chaîne de caractères qui va contenir le résultat
// n : nombre de bits (8, 16, 32 ...)
void int2bin(unsigned integer, char* binary, int n=8)
{  
  for (int i=0;i<n;i++)   
    binary[i] = (integer & (int)1<<(n-i-1)) ? '1' : '0';
  binary[n]='\0';
}
Testez la fonction en ligne sur repl.it.

Il existe une autre option, plus conviviale qui retourne directement la chaîne de caractères. Mais attention, la mémoire nécessaire à la chaîne de caractères est allouée dans la fonction, il est nécessaire de la libérer en dehors de la fonction.
// Convertit un entier en binaire
// integer : l'entier à convertir
// n : nombre de bits (8, 16, 32 ...)
// Retourne une chaîne de caractères contenant le mot binaire
char* int2bin(unsigned integer, int n=8)
{
  char* binary = (char*)malloc(n+1);
  for (int i=0;i<n;i++)   
    binary[i] = (integer & (int)1<<(n-i-1)) ? '1' : '0';
  binary[n]='\0';
  return binary;
}
Testez la fonction en ligne sur repl.it.
Voire aussi :
Annuler
Réinitialiser
Valider
Réponse proposée par Answiki le mercredi 20 novembre 2019 à 10:39:23.
La fonction C suivante permet de convertir un entier en binaire et d'enregistrer le résultat dans une chaîne de caractères :
// Convertit un entier en binaire
// integer : l'entier à convertir
// binary : la chaîne de caractères qui va contenir le résultat
// n : nombre de bits (8, 16, 32 ...)
void int2bin(unsigned integer, char* binary, int n=8)
{  
  for (int i=0;i<n;i++)   
    binary[i] = (integer & (int)1<<(n-i-1)) ? '1' : '0';
  binary[n]='\0';
}
Testez la fonction en ligne sur repl.it.

Il existe une autre option, plus conviviale qui retourne directement la chaîne de caractères. Mais attention, la mémoire nécessaire à la chaîne de caractères est allouée dans la fonction, il est nécessaire de la libérer en dehors de la fonction.
// Convertit un entier en binaire
// integer : l'entier à convertir
// n : nombre de bits (8, 16, 32 ...)
// Retourne une chaîne de caractères contenant le mot binaire
char* int2bin(unsigned integer, int n=8)
{
  char* binary = (char*)malloc(n+1);
  for (int i=0;i<n;i++)   
    binary[i] = (integer & (int)1<<(n-i-1)) ? '1' : '0';
  binary[n]='\0';
  return binary;
}
Testez la fonction en ligne sur repl.it.
Voire aussi :
Réponse proposée par Answiki le mercredi 20 novembre 2019 à 10:30:44.
La fonction C suivante permet de convertir un entier en binaire et d'enregistrer le résultat dans une chaîne de caractères :
// Convertit un entier en binaire
// integer : l'entier à convertir
// binary : la chaîne de caractères qui va contenir le résultat
// n : nombre de bits (8, 16, 32 ...)
void int2bin(unsigned integer, char* binary, int n=8)
{  
  for (int i=0;i<n;i++)   
    binary[i] = (integer & (int)1<<(n-i-1)) ? '1' : '0';
  binary[n]='\0';
}
Testez la fonction en ligne sur repl.it.

Il existe une autre option, plus conviviale qui retourne directement la chaîne de caractères. Mais attention, la mémoire nécessaire à la chaîne de caractères est allouée dans la fonction, il est nécessaire de la libérer en dehors de la fonction.
// Convertit un entier en binaire
// integer : l'entier à convertir
// n : nombre de bits (8, 16, 32 ...)
// Retourne une chaîne de caractères contenant le mot binaire
char* int2bin(unsigned integer, int n=8)
{
  char* binary = (char*)malloc(n+1);
  for (int i=0;i<n;i++)   
    binary[i] = (integer & (int)1<<(n-i-1)) ? '1' : '0';
  binary[n]='\0';
  return binary;
}
Testez la fonction en ligne sur repl.it.