Преобразование двоичного числа в десятичное в C

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

unsigned long int puiss(unsigned long int x, int n)
{
  if(n == 0)
    возврат 1;
  if(n == 1)
    return x;
  unsigned long int x2 = powers(x,n/2);
  if(n%2 == 0)
    отдача х2*х2;
  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)
{
          Чар Снум[20];
          // преобразуем в String
          itoa(двоичный,snum;10);
          // сколько символов?
          int nc = log10((int)двоичный)+1;
          int decimal = 0;
          for(int i = nc-1  ; i >= 0; i--)
          {
            десятичная += char_to_int(snum[i]) * puiss( 2, (nc-1)-i);
         }
          возвращает десятичную дробь;
}
         
int main()
{
      двоичное целое число;
      while(true)
      {
          printf("Введите двоичное число ");
          scanf("%d",& бинарные);
          printf ("%ld в базе 2 = %ld в базе 10\n",двоичный, convertInBase10 (двоичный);
      }
      возвращает 0;
}