Mudança de base binária para base decimal

Venho tentando programar um código para resolução de um exercício. Eis a questão:


Escreva um programa na linguagem C que leia uma string de tamanho qualquer contendo dígitos binários e imprima na tela o valor decimal correspondente.

A leitura da entrada deve ser feita caracter a caracter usando a função getchar().



Contudo, após de criar um código que eu achava ser melhor complexidade para o programa, percebi um problema à qual não sei resolver. O Código:

#include <stdio.h>  

int main() { char c; unsigned int dec=0, i=1;

do{      c = getchar();        if ( c -'0'== 1)     {         dec+= i;     }     i*=2;  }while(c != '\n');  printf("%d\n", dec);  return 0; 

} O problema é que o código está lendo o número e criando um polinômio com sentido esquerda -> direita, e polinômios de mudança de base são lidos no sentido contrario. Devido o uso da função getchar() não sei resolver o exercício. Alguém consegue resolver este problema ?