Konvertieren Sie eine Binärzahl in eine Dezimalzahl in C

#include< stdio.h>
#include< stdlib.h>
#include< math.h>

unsigned long int puiss(unsigned long int x, int n)
{
  if(n == 0)
    Rückgabe 1;
  if(n == 1)
    return x;
  vorzeichenlos long int x2 = potenzen(x,n/2);
  if(n%2 == 0)
    Rückgabe x2*x2;
  return x2 * x2 * x;
}
int char_to_int(char d)
{
  char str[2];
  str[0] = d;
  str[1] = '\0';
  return (int) strtol(str, NULL, 10);
}

unsigned int convertirEnBase10(int binary)
{
          char snum[20];
          // konvertieren in String
          itoa(binär,snum,10);
          // Wie viele Zeichen?
          int nc = log10((int)binär)+1;
          int dezimal = 0;
          for(int i = nc-1  ; i >= 0; i--)
          {
            dezimal += char_to_int(snum[i]) * puiss( 2, (nc-1)-i);
         }
          dezimal zurückgeben;
}
         
int main()
{
      binär int;
      while(true)
      {
          printf("Geben Sie eine Binärzahl ein");
          scanf("%d",& binär);
          printf ("%ld in Basis 2 = %ld in Basis 10\n",binär, convertInBase10 (binär);
      }
      0 zurückgeben;
}